<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sytyi</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sytyi"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Sytyi"/>
	<updated>2026-05-28T10:38:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ValidationFAQ&amp;diff=43476</id>
		<title>ValidationFAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ValidationFAQ&amp;diff=43476"/>
		<updated>2011-08-21T13:31:49Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Validation is a special tool, developed by Sytyi, GSoC 2011 participant.&lt;br /&gt;
&lt;br /&gt;
This is a special page to answer validation-specified questions, since using of it is not so obvious.&lt;br /&gt;
&lt;br /&gt;
= General questions about validation =&lt;br /&gt;
* When is validation done? - Validation is done while config fle is parsing. Parser calls validator when opens|closes tag or reads a key.&lt;br /&gt;
* Can I create my own validation, based on special idea? - Yes. Parser calls methods of an Abstract Base Class, so you can write your own realization and override methods. If you are interested - [[ValidationDesign]] can be useful for you. Good luck!&lt;br /&gt;
* What realizations are already written? - At this moment schema validation only.&lt;br /&gt;
&lt;br /&gt;
= General questions about schema validation  =&lt;br /&gt;
* What is the main idea of schema validation? - There is a special schema, describing allowed WML. At this moment of time next information is stored: Name of the tag, his minimal required and maximum allowed number of occasions (in context of his parent); List of keys allowed to use in this tag, each key has its name, type and default value (or is mandatory key); List of allowed child tags.&lt;br /&gt;
* What are the possible errors? - You can receive next errors: &lt;br /&gt;
** This tag|key is not allowed here.&lt;br /&gt;
** Required M tags, found X &amp;lt; M tags.&lt;br /&gt;
** Allowed N tags, found X &amp;gt; N tags.&lt;br /&gt;
** Missing mandatory key.&lt;br /&gt;
** Key has wrong value.&lt;br /&gt;
* Where can I read an error? - There are two modes of validation: default and strict. While default, errors arre printed in validation log. While strict (wgich can be enabled with --strict-validation) every validation error is treated as fatal, and creates a WML exception which stops reading of the file and prints error message either to console or on the screen (depends on file. I.e. GUI WML errors stop loading wesnoth and are printed to console).&lt;br /&gt;
&lt;br /&gt;
== I'm a WML contibutor ==&lt;br /&gt;
* How can I know that my WML was validated - Preparing of validation needs a lot of time. At this moment of time only one toplevel tag [gui] can be validated. Only C++ developer can enable validation and he needs schema file. &lt;br /&gt;
&lt;br /&gt;
== I'm a WML contibutor and I want to help in creating schema ==&lt;br /&gt;
* Can you tell some about schema in general? - Schema file is build from schema markup using schema_generator tool. Schema markup can be used both in different .cpp files and .schema files. Schema markup from different files is merged. Schema is stored in .cfg file as WML with toplevel [wml_schema]&lt;br /&gt;
* Where can I read detail info about schema markup format? - [[WML_Annotation_Format]].&lt;br /&gt;
* How can I use schema_generator tool? - Run Cmake, Enable option &amp;quot;Enable tools&amp;quot;, and run make. Two specific schema tools will be build: schema_generator and schema_validator. You can read about usage of the schema_generator on [[WML_Annotation_Format#Usage_of_the_tool]] Please, specify the input directory and the output file.&lt;br /&gt;
* How can I test my schema file? - Either read next article in this FAQ, or use schema_validator.&lt;br /&gt;
./schema_validator -i &amp;lt;input_file&amp;gt; -s &amp;lt;schema_file&amp;gt; Then you will see a lot of error messages.  &lt;br /&gt;
&lt;br /&gt;
== I'm a C++ developer and I want to enable validation in my contributions to engine ==&lt;br /&gt;
If you are interested how that works, [[ValidationDesign]] can be useful for you.&lt;br /&gt;
* How can I do that? - First, you need to have initial schema file. Second, find all occasions of reading config file and using one of the [http://devdocs.wesnoth.org/parser_8hpp.html read] functions.   &lt;br /&gt;
Create your validator object , catch exception (bad schema, or file not read), and send validator as a parameter to read(). You can specify whether you need strict validation or not. Id strict validation was not enabled errors will be put in &amp;quot;validation&amp;quot; log. &lt;br /&gt;
&lt;br /&gt;
== Future of validation ==&lt;br /&gt;
If you are interesting in future of validation, please read (here will be links to the forum, to the non-written yet threads about new schema markup format and putting schema info inside file to be validated)&lt;br /&gt;
== Your questions ==&lt;br /&gt;
Put your own questions here, please. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With best wishes - Sytyi (nsytyi@gmail.com)&lt;br /&gt;
&lt;br /&gt;
[[Category:Validation]]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ValidationFAQ&amp;diff=43475</id>
		<title>ValidationFAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ValidationFAQ&amp;diff=43475"/>
		<updated>2011-08-21T13:12:47Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: Created page with 'Validation is a special tool, developed by Sytyi, GSoC 2011 participant.  This is a special page to answer validation-specified questions, since using of it is not so obvious.  =…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Validation is a special tool, developed by Sytyi, GSoC 2011 participant.&lt;br /&gt;
&lt;br /&gt;
This is a special page to answer validation-specified questions, since using of it is not so obvious.&lt;br /&gt;
&lt;br /&gt;
= General questions about validation =&lt;br /&gt;
* When is validation done? - Validation is done while config fle is parsing. Parser calls validator when opens|closes tag or reads a key.&lt;br /&gt;
* Can I create my own validation, based on special idea? - Yes. Parser calls methods of an Abstract Base Class, so you can write your own realization and override methods. If you are interested - [[ValidationDesign]] can be useful for you. Good luck!&lt;br /&gt;
* What realizations are already written? - At this moment schema validation only.&lt;br /&gt;
&lt;br /&gt;
= General questions about schema validation  =&lt;br /&gt;
* What is the main idea of schema validation? - There is a special schema, describing allowed WML. At this moment of time next information is stored: Name of the tag, his minimal required and maximum allowed number of occasions (in context of his parent); List of keys allowed to use in this tag, each key has its name, type and default value (or is mandatory key); List of allowed child tags.&lt;br /&gt;
* What are the possible errors? - You can receive next errors: &lt;br /&gt;
** This tag|key is not allowed here.&lt;br /&gt;
** Required M tags, found X &amp;lt; M tags.&lt;br /&gt;
** Allowed N tags, found X &amp;gt; N tags.&lt;br /&gt;
** Missing mandatory key.&lt;br /&gt;
** Key has wrong value.&lt;br /&gt;
* Where can I read an error? - There are two modes of validation: default and strict. While default, errors arre printed in validation log. While strict (wgich can be enabled with --strict-validation) every validation error is treated as fatal, and creates a WML exception which stops reading of the file and prints error message either to console or on the screen (depends on file. I.e. GUI WML errors stop loading wesnoth and are printed to console).&lt;br /&gt;
&lt;br /&gt;
== I'm a WML contibutor ==&lt;br /&gt;
* How can I know that my WML was validated - Preparing of validation needs a lot of time. At this moment of time only one toplevel tag [gui] can be validated. Only C++ developer can enable validation and he needs schema file. &lt;br /&gt;
&lt;br /&gt;
== I'm a WML contibutor and I want to help in creating schema ==&lt;br /&gt;
* Can you tell some about schema in general? - Schema file is build from schema markup using schema_generator tool. Schema markup can be used both in different .cpp files and .schema files. Schema markup from different files is merged. Schema is stored in .cfg file as WML with toplevel [wml_schema]&lt;br /&gt;
* Where can I read detail info about schema markup format? - [[WML_Annotation_Format]].&lt;br /&gt;
* How can I use schema_generator tool? - Run Cmake, Enable option &amp;quot;Enable tools&amp;quot;, and run make. Two specific schema tools will be build: schema_generator and schema_validator. You can read about usage of the schema_generator on [[WML_Annotation_Format#Usage_of_the_tool]] Please, specify the input directory and the output file.&lt;br /&gt;
* How can I test my schema file? - Either read next article in this FAQ, or use schema_validator.&lt;br /&gt;
./schema_validator -i &amp;lt;input_file&amp;gt; -s &amp;lt;schema_file&amp;gt; Then you will see a lot of error messages.  &lt;br /&gt;
&lt;br /&gt;
== I'm a C++ developer and I want to enable validation in my contributions to engine ==&lt;br /&gt;
* How can I do that? - First, you need to have initial schema file. Second, find all occasions of reading config file and using one of the [http://devdocs.wesnoth.org/parser_8hpp.html read] functions.  &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Validation]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Category:Validation&amp;diff=43406</id>
		<title>Category:Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Category:Validation&amp;diff=43406"/>
		<updated>2011-08-16T19:40:29Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: Created page with 'This page contains links to pages which are explaining how WML Validation works.'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains links to pages which are explaining how WML Validation works.&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43242</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43242"/>
		<updated>2011-07-17T11:55:39Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Format of annotations and schema file ==&lt;br /&gt;
See [[WML_Annotation_Format]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
Also see [[ValidationDesign]]&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| 90% NEED REVISION&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| [[WML_Annotation_Format|DOCUMENTATION]] including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| 60% &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
| NEED DISCUSSION &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| 10%&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| 5%&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| NEED DISCUSSION&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| NOT NEEDED&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43202</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43202"/>
		<updated>2011-07-10T15:52:58Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| 90% NEED REVISION&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| [[WML_Annotation_Format|DOCUMENTATION]] including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| 60% &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
| NEED DISCUSSION &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| 10%&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| 5%&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| NEED DISCUSSION&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| NOT NEEDED&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43130</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43130"/>
		<updated>2011-07-04T20:54:13Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| 90% NEED REVISION&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| [[WML_Annotation_Format|DOCUMENTATION]] including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| 50% &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| 75%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43126</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43126"/>
		<updated>2011-07-03T12:19:14Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| 90% NEED REVISION&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| [[WML_Annotation_Format|DOCUMENTATION]] including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| 90% &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| IN WORK&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43099</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=43099"/>
		<updated>2011-06-27T19:38:46Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| 90%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| 90% NEED REVISION&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| 90% &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| 100%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| IN WORK&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42994</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42994"/>
		<updated>2011-06-09T21:23:55Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 50%&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| 50%&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| 50%&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| IN WORK&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42312</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42312"/>
		<updated>2011-04-19T13:38:55Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Contacts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
==IRC==&lt;br /&gt;
Sytyi&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42240</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42240"/>
		<updated>2011-04-17T12:50:02Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42127</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42127"/>
		<updated>2011-04-15T01:58:54Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42126</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42126"/>
		<updated>2011-04-15T01:55:49Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 10.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42125</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42125"/>
		<updated>2011-04-15T01:55:34Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| global tags support&lt;br /&gt;
| BASIC&lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 10.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
The milestones after 30.06 schould be improved with more information, non mainstream milestones and so one. It's a bit hard nowadays. The more work - the more problems I explore.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42124</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42124"/>
		<updated>2011-04-15T01:52:48Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 10.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42123</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42123"/>
		<updated>2011-04-15T01:52:25Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 10.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42122</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42122"/>
		<updated>2011-04-15T01:51:42Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| extend error messages&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| MILESTONE = VALIDATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 10.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing schema file. Build wml tags tree&lt;br /&gt;
| BASIC&lt;br /&gt;
| 10.07&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| parsing wml file part. Using /src/serialisation/ (Optionally)&lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.07&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| checking against tree. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 5.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| generating gcc-style errors implementation&lt;br /&gt;
| BASIC&lt;br /&gt;
| 15.08&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| working tool &lt;br /&gt;
| BASIC&lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| VALIDATOR&lt;br /&gt;
| documentation about data containers, hierarchy, algorithms and input/output specification. &lt;br /&gt;
| BASIC&lt;br /&gt;
| 25.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42121</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42121"/>
		<updated>2011-04-15T01:41:25Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| SG&lt;br /&gt;
| MILESTONE = SCHEMA GENERATOR&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42120</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42120"/>
		<updated>2011-04-15T01:40:23Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| SG&lt;br /&gt;
| MILESTONE&lt;br /&gt;
| GREAT &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42119</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42119"/>
		<updated>2011-04-15T01:39:36Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity. view stage 2&lt;br /&gt;
| VERY IMPORTANT&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
| 5&lt;br /&gt;
| SG &lt;br /&gt;
| IMPLEMENTATION working mainstream source to SG&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 20.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| SG&lt;br /&gt;
| DOCUMENTATION including extended examples of annotations, algorithm describing, and list of used regexes&lt;br /&gt;
| BASIC  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| SG&lt;br /&gt;
| INIT file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| SG&lt;br /&gt;
| BUILD system support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| SG&lt;br /&gt;
| refreshable schema file support&lt;br /&gt;
| ADDITIONAL  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| SG&lt;br /&gt;
| working SG tool &lt;br /&gt;
| MILESTONE  &lt;br /&gt;
| 30.06&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
BASIC PRIORITY means that milestone without that stage just cannot be mentioned&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42110</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42110"/>
		<updated>2011-04-14T22:29:25Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| PREPARE&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| PREPARE&lt;br /&gt;
| improve annotations list due to nessesarity of stage 2&lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| PREPARE&lt;br /&gt;
| write documentation and examples of annotations in wiki  &lt;br /&gt;
| 23.05&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42109</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42109"/>
		<updated>2011-04-14T22:21:16Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Proposal Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
WIP proof-on-concept SG example here https://gna.org/patch/?2636&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1&lt;br /&gt;
| improve annotations list due to nessesarity of stage 2&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42108</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42108"/>
		<updated>2011-04-14T22:19:44Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Contacts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
'''IRC:'''  Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
'''E-mail:''' nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
'''Skype''': azcure&amp;lt;br&amp;gt;&lt;br /&gt;
'''ICQ:''' four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1&lt;br /&gt;
| improve annotations list due to nessesarity of stage 2&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42107</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42107"/>
		<updated>2011-04-14T22:19:11Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Contacts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
IRC  - Sytyi&amp;lt;br&amp;gt;&lt;br /&gt;
E-mail nsytyi[at]gmail.com&amp;lt;br&amp;gt;&lt;br /&gt;
Skype azcure&amp;lt;br&amp;gt;&lt;br /&gt;
ICQ four-zero-six-one-four-four-one-seven-four&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1&lt;br /&gt;
| improve annotations list due to nessesarity of stage 2&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42106</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42106"/>
		<updated>2011-04-14T22:18:54Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* IRC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== Contacts ==&lt;br /&gt;
IRC  - Sytyi&lt;br /&gt;
E-mail nsytyi[at]gmail.com&lt;br /&gt;
Skype azcure&lt;br /&gt;
ICQ four-zero-six-one-four-four-one-seven-four&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1&lt;br /&gt;
| improve annotations list due to nessesarity of stage 2&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42105</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42105"/>
		<updated>2011-04-14T22:16:23Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
| PART OF&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 10.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|&lt;br /&gt;
| MILESTONE = &amp;quot;PREPARE&amp;quot;&lt;br /&gt;
| GREAT&lt;br /&gt;
| 23.05 &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 1&lt;br /&gt;
| annotate a part of existing code&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 1&lt;br /&gt;
| improve annotations list due to nessesarity of stage 2&lt;br /&gt;
| 23.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42037</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42037"/>
		<updated>2011-04-12T21:08:19Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 06.00&lt;br /&gt;
| IN PROCESS&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42036</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42036"/>
		<updated>2011-04-12T21:07:36Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 06.00&lt;br /&gt;
| IN&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42035</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42035"/>
		<updated>2011-04-12T21:06:49Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 06.00&lt;br /&gt;
| IN&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42034</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42034"/>
		<updated>2011-04-12T21:06:05Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! ID&lt;br /&gt;
! NAME&lt;br /&gt;
! PRIORITY&lt;br /&gt;
! LAST FINISH TIME&lt;br /&gt;
! STATUS&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| Proof-of-concept patch&lt;br /&gt;
| GREATEST&lt;br /&gt;
| 15.04 06.00&lt;br /&gt;
| IN&lt;br /&gt;
|-&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42031</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=42031"/>
		<updated>2011-04-12T20:51:35Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41982</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41982"/>
		<updated>2011-04-11T17:54:29Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Some stuff from the university */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41981</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41981"/>
		<updated>2011-04-11T17:52:59Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
To save current wiki formatting and to make no many thigs to write, I propose to add only info about parentness and hierarchy.&lt;br /&gt;
&lt;br /&gt;
=== Tags ===&lt;br /&gt;
Tags start with &lt;br /&gt;
 @start{tag}{name=&amp;quot;*&amp;quot;, minoccurs=number, maxoccurs=number}&lt;br /&gt;
*name - marks the name of tag&lt;br /&gt;
*minoccurs - number of minimal allowed occurs.&lt;br /&gt;
*maxoccurs - number of maximum allowed occurs.&lt;br /&gt;
There can be nested tags and tables.&lt;br /&gt;
If table is marked as key table - information about keys will be get from there.   &lt;br /&gt;
&lt;br /&gt;
The table needs to end with&lt;br /&gt;
 @end{tag}{name=&amp;quot;*&amp;quot;} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also to set parent tag from another source file &lt;br /&gt;
 @begin{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
 @end{parent}{name=&amp;quot;name&amp;quot;}&lt;br /&gt;
'''Example:''' http://gna.org/patch/?2629&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Some stuff from the university ==&lt;br /&gt;
http://rghost.ru/5139505&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41875</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41875"/>
		<updated>2011-04-09T12:17:33Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Patches and commits */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
I propose to create annotation in Java style. @AnnotationName (list of parameters, separated with comma and space)&lt;br /&gt;
&lt;br /&gt;
Annotation Parent to set parent tag from another source file &lt;br /&gt;
 @Parent (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Tag &lt;br /&gt;
 @Tag (&lt;br /&gt;
 name=&amp;quot;name_of_tag&amp;quot;, #mandatory&lt;br /&gt;
 minOccurs=number_of_min_occurs,&lt;br /&gt;
 maxOccurs=number_of_max_occurs,  #-1 to mark infinity case&lt;br /&gt;
 global=boolean_value  #not mandatory &lt;br /&gt;
 )&lt;br /&gt;
Annotation AllowGlobal &lt;br /&gt;
 @AllowGlobal (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Key&lt;br /&gt;
 @Key(&lt;br /&gt;
 name=&amp;quot;key_name&amp;quot;,&lt;br /&gt;
 type=&amp;quot;type&amp;quot;,&lt;br /&gt;
 default=&amp;quot;default_value&amp;quot;, # | default=default_number_value,&lt;br /&gt;
 mandatory=boolean_value&lt;br /&gt;
 )&lt;br /&gt;
Annotation Value&lt;br /&gt;
 @Value(&lt;br /&gt;
 key=&amp;quot;name_key&amp;quot;&lt;br /&gt;
 value=&amp;quot;value&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation EndTag&lt;br /&gt;
 @EndTag(&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation EndParent&lt;br /&gt;
 @EndTag(&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 /* WML&lt;br /&gt;
 * @Parent (name=&amp;quot;&amp;quot;)&lt;br /&gt;
 * @Tag  (name=&amp;quot;name_tag&amp;quot;, minoccurs=number, maxoccurs=number, global=bool value)   &lt;br /&gt;
 * @Key (name=&amp;quot;name_key&amp;quot;, type=&amp;quot;type&amp;quot;, default=&amp;quot;default_value&amp;quot;, mandatory=bool value) &lt;br /&gt;
 * @Value (key=&amp;quot;key_name&amp;quot;, value=&amp;quot;first&amp;quot;,&amp;quot;second&amp;quot;) &lt;br /&gt;
 * @EndTag (name=&amp;quot;name_tag&amp;quot;)&lt;br /&gt;
 */&lt;br /&gt;
 /*WML&lt;br /&gt;
 * @Tag (name=&amp;quot;name2&amp;quot;, minoccurs=&amp;quot;number&amp;quot;, maxoccurs=&amp;quot;number&amp;quot; )    &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*WML&lt;br /&gt;
 *@EndTag (name=&amp;quot;name2&amp;quot;) &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Some stuff from the university ==&lt;br /&gt;
http://rghost.ru/5139505&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41832</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41832"/>
		<updated>2011-04-08T19:40:47Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
I propose to create annotation in Java style. @AnnotationName (list of parameters, separated with comma and space)&lt;br /&gt;
&lt;br /&gt;
Annotation Parent to set parent tag from another source file &lt;br /&gt;
 @Parent (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Tag &lt;br /&gt;
 @Tag (&lt;br /&gt;
 name=&amp;quot;name_of_tag&amp;quot;, #mandatory&lt;br /&gt;
 minOccurs=number_of_min_occurs,&lt;br /&gt;
 maxOccurs=number_of_max_occurs,  #-1 to mark infinity case&lt;br /&gt;
 global=boolean_value  #not mandatory &lt;br /&gt;
 )&lt;br /&gt;
Annotation AllowGlobal &lt;br /&gt;
 @AllowGlobal (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Key&lt;br /&gt;
 @Key(&lt;br /&gt;
 name=&amp;quot;key_name&amp;quot;,&lt;br /&gt;
 type=&amp;quot;type&amp;quot;,&lt;br /&gt;
 default=&amp;quot;default_value&amp;quot;, # | default=default_number_value,&lt;br /&gt;
 mandatory=boolean_value&lt;br /&gt;
 )&lt;br /&gt;
Annotation Value&lt;br /&gt;
 @Value(&lt;br /&gt;
 key=&amp;quot;name_key&amp;quot;&lt;br /&gt;
 value=&amp;quot;value&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation EndTag&lt;br /&gt;
 @EndTag(&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation EndParent&lt;br /&gt;
 @EndTag(&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 /* WML&lt;br /&gt;
 * @Parent (name=&amp;quot;&amp;quot;)&lt;br /&gt;
 * @Tag  (name=&amp;quot;name_tag&amp;quot;, minoccurs=number, maxoccurs=number, global=bool value)   &lt;br /&gt;
 * @Key (name=&amp;quot;name_key&amp;quot;, type=&amp;quot;type&amp;quot;, default=&amp;quot;default_value&amp;quot;, mandatory=bool value) &lt;br /&gt;
 * @Value (key=&amp;quot;key_name&amp;quot;, value=&amp;quot;first&amp;quot;,&amp;quot;second&amp;quot;) &lt;br /&gt;
 * @EndTag (name=&amp;quot;name_tag&amp;quot;)&lt;br /&gt;
 */&lt;br /&gt;
 /*WML&lt;br /&gt;
 * @Tag (name=&amp;quot;name2&amp;quot;, minoccurs=&amp;quot;number&amp;quot;, maxoccurs=&amp;quot;number&amp;quot; )    &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*WML&lt;br /&gt;
 *@EndTag (name=&amp;quot;name2&amp;quot;) &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41826</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41826"/>
		<updated>2011-04-08T18:56:17Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
I propose to create annotation in Java style. @AnnotationName (list of parameters, separated with comma and space)&lt;br /&gt;
&lt;br /&gt;
Annotation Parent to set parent tag from another source file &lt;br /&gt;
 @Parent (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Tag &lt;br /&gt;
 @Tag (&lt;br /&gt;
 name=&amp;quot;name_of_tag&amp;quot;, #mandatory&lt;br /&gt;
 minOccurs=number_of_min_occurs,&lt;br /&gt;
 maxOccurs=number_of_max_occurs,  #-1 to mark infinity case&lt;br /&gt;
 global=boolean_value  #not mandatory &lt;br /&gt;
 )&lt;br /&gt;
Annotation AllowGlobal &lt;br /&gt;
 @AllowGlobal (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Key&lt;br /&gt;
 @Key(&lt;br /&gt;
 name=&amp;quot;key_name&amp;quot;,&lt;br /&gt;
 type=&amp;quot;type&amp;quot;,&lt;br /&gt;
 default=&amp;quot;default_value&amp;quot;, # | default=default_number_value,&lt;br /&gt;
 mandatory=boolean_value&lt;br /&gt;
 )&lt;br /&gt;
Annotation Value&lt;br /&gt;
 @Value(&lt;br /&gt;
 key=&amp;quot;name_key&amp;quot;&lt;br /&gt;
 value=&amp;quot;value&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation EndTag&lt;br /&gt;
 @EndTag(&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 /* WML&lt;br /&gt;
 * @Parent (name=&amp;quot;&amp;quot;)&lt;br /&gt;
 * @Tag  (name=&amp;quot;name_tag&amp;quot;, minoccurs=number, maxoccurs=number, global=bool value)   &lt;br /&gt;
 * @Key (name=&amp;quot;name_key&amp;quot;, type=&amp;quot;type&amp;quot;, default=&amp;quot;default_value&amp;quot;, mandatory=bool value) &lt;br /&gt;
 * @Value (key=&amp;quot;key_name&amp;quot;, value=&amp;quot;first&amp;quot;,&amp;quot;second&amp;quot;) &lt;br /&gt;
 * @EndTag (name=&amp;quot;name_tag&amp;quot;)&lt;br /&gt;
 */&lt;br /&gt;
 /*WML&lt;br /&gt;
 * @Tag (name=&amp;quot;name2&amp;quot;, minoccurs=&amp;quot;number&amp;quot;, maxoccurs=&amp;quot;number&amp;quot; )    &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*WML&lt;br /&gt;
 *@EndTag (name=&amp;quot;name2&amp;quot;) &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41818</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41818"/>
		<updated>2011-04-08T18:18:50Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
I propose to create annotation in Java style. @AnnotationName (list of parameters, separated with comma and space)&lt;br /&gt;
&lt;br /&gt;
Annotation Parent to set parent tag from another source file &lt;br /&gt;
 @Parent (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Tag &lt;br /&gt;
 @Tag (&lt;br /&gt;
 name=&amp;quot;name_of_tag&amp;quot;, #mandatory&lt;br /&gt;
 minOccurs=number_of_min_occurs,&lt;br /&gt;
 maxOccurs=number_of_max_occurs,  #-1 to mark infinity case&lt;br /&gt;
 global=boolean_value  #not mandatory &lt;br /&gt;
 )&lt;br /&gt;
Annotation AllowGlobal &lt;br /&gt;
 @AllowGlobal (&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation Key&lt;br /&gt;
 @Key(&lt;br /&gt;
 name=&amp;quot;key_name&amp;quot;,&lt;br /&gt;
 type=&amp;quot;type&amp;quot;,&lt;br /&gt;
 default=&amp;quot;default_value&amp;quot;, # | default=default_number_value,&lt;br /&gt;
 mandatory=boolean_value&lt;br /&gt;
 )&lt;br /&gt;
Annotation Value&lt;br /&gt;
 @Value(&lt;br /&gt;
 key=&amp;quot;name_key&amp;quot;&lt;br /&gt;
 value=&amp;quot;value&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
Annotation EndTag&lt;br /&gt;
 @EndTag(&lt;br /&gt;
 name=&amp;quot;name&amp;quot;&lt;br /&gt;
 )&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 /* &lt;br /&gt;
 * @Parent (name=&amp;quot;&amp;quot;)&lt;br /&gt;
 * @Tag  (name=&amp;quot;name_tag&amp;quot;, minoccurs=number, maxoccurs=number, global=bool value)   &lt;br /&gt;
 * @Key (name=&amp;quot;name_key&amp;quot;, type=&amp;quot;type&amp;quot;, default=&amp;quot;default_value&amp;quot;, mandatory=bool value) &lt;br /&gt;
 * @Value (key=&amp;quot;key_name&amp;quot;, value=&amp;quot;first&amp;quot;,&amp;quot;second&amp;quot;) &lt;br /&gt;
 * @EndTag (name=&amp;quot;name_tag&amp;quot;)&lt;br /&gt;
 */&lt;br /&gt;
 */&lt;br /&gt;
 * @Tag (name=&amp;quot;name2&amp;quot;, minoccurs=&amp;quot;number&amp;quot;, maxoccurs=&amp;quot;number&amp;quot; )    &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*&lt;br /&gt;
 *@EndTag (name=&amp;quot;name2&amp;quot;) &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41811</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41811"/>
		<updated>2011-04-08T17:48:00Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 /* &lt;br /&gt;
 * @ParentTag (name=&amp;quot;name_parent_tag&amp;quot;) #not mandatory, if any tag is opened &lt;br /&gt;
 * @Tag  (name=&amp;quot;name_tag&amp;quot;, minoccurs=&amp;quot;number&amp;quot;, maxoccurs=&amp;quot;number&amp;quot;, global=&amp;quot;bool value&amp;quot;)   &lt;br /&gt;
 */&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key (name=&amp;quot;name_key&amp;quot;, type=&amp;quot;type&amp;quot;, default=&amp;quot;default_value&amp;quot;, mandatory=&amp;quot;bool value&amp;quot;) &lt;br /&gt;
 #if type is missing, then value list should be in this tag&lt;br /&gt;
 * @Value (key=&amp;quot;key_name&amp;quot;, value=&amp;quot;first&amp;quot;,&amp;quot;second&amp;quot;) &lt;br /&gt;
 */ &lt;br /&gt;
 /*&lt;br /&gt;
 * @EndTag (name=&amp;quot;name_tag&amp;quot;)&lt;br /&gt;
 */&lt;br /&gt;
 */&lt;br /&gt;
 * @Tag (name=&amp;quot;name2&amp;quot;, minoccurs=&amp;quot;number&amp;quot;, maxoccurs=&amp;quot;number&amp;quot; )    &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*&lt;br /&gt;
 *@EndTag (name=&amp;quot;name2&amp;quot;) &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41577</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41577"/>
		<updated>2011-04-05T15:54:33Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* How It All Work? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @ParentTag nameparent #not mandatory, if any tag is opened &lt;br /&gt;
 * @Tag  name   #mandatory&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key   #mandatory&lt;br /&gt;
 * @Default value &lt;br /&gt;
 * @Type type #mandatory&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
 /* &lt;br /&gt;
 * @EndTag name  #mandatory&lt;br /&gt;
 * @TagName name2  &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*&lt;br /&gt;
 *@EndTag name2 &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build System ==&lt;br /&gt;
I want to include Schema generating tool to build systems. This is not preference idea, only an add-on part. I want to make schema file refreshable (one source file was changed and only that part of schema will be updated), not &amp;quot;delete-and-again&amp;quot;, but there are a few problems. If a tag or a key is removed from the source, how th SGT know about it? I think two ways: one to add source files names to schema file (this can be a little help to developer, trying to fix some bugs in code ), and second: to add special annotation to deleted keys.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41576</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41576"/>
		<updated>2011-04-05T15:35:53Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @ParentTag nameparent #not mandatory, if any tag is opened &lt;br /&gt;
 * @Tag  name   #mandatory&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key   #mandatory&lt;br /&gt;
 * @Default value &lt;br /&gt;
 * @Type type #mandatory&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
 /* &lt;br /&gt;
 * @EndTag name  #mandatory&lt;br /&gt;
 * @TagName name2  &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*&lt;br /&gt;
 *@EndTag name2 &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41575</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41575"/>
		<updated>2011-04-05T15:35:36Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @ParentTag nameparent #not mandatory, if any tag is opened &lt;br /&gt;
 * @Tag  name   #mandatory&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key   #mandatory&lt;br /&gt;
 * @Default value &lt;br /&gt;
 * @Type type #mandatory&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
 /* &lt;br /&gt;
 * @EndTag name  #mandatory&lt;br /&gt;
 * @TagName name2  &lt;br /&gt;
 */&lt;br /&gt;
 some source about second tag&lt;br /&gt;
 /*&lt;br /&gt;
 *@EndTag name2 &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41574</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41574"/>
		<updated>2011-04-05T14:26:16Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Annotation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @ParentTag nameparent #not mandatory, if any tag is opened &lt;br /&gt;
 * @Tag  name   #mandatory&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key   #mandatory&lt;br /&gt;
 * @Default value &lt;br /&gt;
 * @Type type #mandatory&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
* @EndTag name  #mandatory&lt;br /&gt;
* @TagName name2  &lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
*@EndTag name2 &lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41494</id>
		<title>User:Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41494"/>
		<updated>2011-04-01T21:07:14Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;proposal migrated here:  http://wiki.wesnoth.org/GSoC_2011_Sytyi&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41487</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41487"/>
		<updated>2011-04-01T20:09:14Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Schema file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
bool, int, float, string, tstring  (for Translated string), LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
unsigned, f_unsigned, f_int, f_bool, f_string, f_string, f_tstring &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @TagName  name&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @TopLevel  #for top-level tags&lt;br /&gt;
 * @Special   #for tags, who depends on the parent tag&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key&lt;br /&gt;
 * @Default value&lt;br /&gt;
 * @Type type&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41486</id>
		<title>User:Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41486"/>
		<updated>2011-04-01T20:00:04Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41485</id>
		<title>GSoC 2011 Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GSoC_2011_Sytyi&amp;diff=41485"/>
		<updated>2011-04-01T19:59:19Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: Created page with '{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}} == Description == &amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt; The main idea of WML Validator is grammar based validator on C++ gener…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
boolean&amp;lt;br&amp;gt;&lt;br /&gt;
integer&amp;lt;br&amp;gt;&lt;br /&gt;
fnum   (formula number)&amp;lt;br&amp;gt;&lt;br /&gt;
fbool &amp;lt;br&amp;gt;&lt;br /&gt;
float&amp;lt;br&amp;gt;&lt;br /&gt;
color&amp;lt;br&amp;gt;&lt;br /&gt;
string&amp;lt;br&amp;gt;&lt;br /&gt;
Tstring  (for Translated string)&amp;lt;br&amp;gt;&lt;br /&gt;
LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @TagName  name&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @TopLevel  #for top-level tags&lt;br /&gt;
 * @Special   #for tags, who depends on the parent tag&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key&lt;br /&gt;
 * @Default value&lt;br /&gt;
 * @Type type&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41451</id>
		<title>User:Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41451"/>
		<updated>2011-04-01T05:14:54Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
boolean&amp;lt;br&amp;gt;&lt;br /&gt;
integer&amp;lt;br&amp;gt;&lt;br /&gt;
fnum   (formula number)&amp;lt;br&amp;gt;&lt;br /&gt;
fbool &amp;lt;br&amp;gt;&lt;br /&gt;
float&amp;lt;br&amp;gt;&lt;br /&gt;
color&amp;lt;br&amp;gt;&lt;br /&gt;
string&amp;lt;br&amp;gt;&lt;br /&gt;
Tstring  (for Translated string)&amp;lt;br&amp;gt;&lt;br /&gt;
LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @TagName  name&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @TopLevel  #for top-level tags&lt;br /&gt;
 * @Special   #for tags, who depends on the parent tag&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key&lt;br /&gt;
 * @Default value&lt;br /&gt;
 * @Type type&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41426</id>
		<title>User:Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41426"/>
		<updated>2011-03-31T20:35:35Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Schema file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
boolean&amp;lt;br&amp;gt;&lt;br /&gt;
integer&amp;lt;br&amp;gt;&lt;br /&gt;
fnum   (formula number)&amp;lt;br&amp;gt;&lt;br /&gt;
fbool &amp;lt;br&amp;gt;&lt;br /&gt;
float&amp;lt;br&amp;gt;&lt;br /&gt;
color&amp;lt;br&amp;gt;&lt;br /&gt;
string&amp;lt;br&amp;gt;&lt;br /&gt;
Tstring  (for Translated string)&amp;lt;br&amp;gt;&lt;br /&gt;
LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @TagName  name&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @TopLevel  #for top-level tags&lt;br /&gt;
 * @Special   #for tags, who depends on the parent tag&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key&lt;br /&gt;
 * @Default value&lt;br /&gt;
 * @Type type&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
includes&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41424</id>
		<title>User:Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41424"/>
		<updated>2011-03-31T20:33:20Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Schema file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
boolean&amp;lt;br&amp;gt;&lt;br /&gt;
integer&amp;lt;br&amp;gt;&lt;br /&gt;
fnum   (formula number)&amp;lt;br&amp;gt;&lt;br /&gt;
fbool &amp;lt;br&amp;gt;&lt;br /&gt;
float&amp;lt;br&amp;gt;&lt;br /&gt;
string&amp;lt;br&amp;gt;&lt;br /&gt;
Tstring  (for Translated string)&amp;lt;br&amp;gt;&lt;br /&gt;
LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @TagName  name&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @TopLevel  #for top-level tags&lt;br /&gt;
 * @Special   #for tags, who depends on the parent tag&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key&lt;br /&gt;
 * @Default value&lt;br /&gt;
 * @Type type&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
includes&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41422</id>
		<title>User:Sytyi</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Sytyi&amp;diff=41422"/>
		<updated>2011-03-31T20:32:15Z</updated>

		<summary type="html">&lt;p&gt;Sytyi: /* Schema file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;lt;h4&amp;gt;Sytyi - WML Validator&amp;lt;/h4&amp;gt;&lt;br /&gt;
The main idea of WML Validator is grammar based validator on C++ generating '''USER-FRIENDLY''' error messages in gcc style.&lt;br /&gt;
&lt;br /&gt;
== IRC ==&lt;br /&gt;
Sytyi&lt;br /&gt;
&lt;br /&gt;
== Proposal Summary ==&lt;br /&gt;
I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from annotated source.  Validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed in this place.&lt;br /&gt;
&lt;br /&gt;
Main idea is the hierarchical structure. Data storing allows to check key value, just by comparing with possible values. Also some simple types as string, integer, boolean can be possible too.&lt;br /&gt;
&lt;br /&gt;
There are two problems:&lt;br /&gt;
# Tags with different specific but one name. I think hierarchy will solve this problem but make another one. Each tag will have     &lt;br /&gt;
# Generally used tags like [action], [event], [filter]. They will be organized in global list. And list tags will have they mentioned. With this, hierarchy is broken a little, but it is still not graph in the widely understanding.&lt;br /&gt;
&lt;br /&gt;
I also want to include Schema Generator in build system.&lt;br /&gt;
I suppose, SG to update schema file, not to &amp;quot;delete-and-again&amp;quot; generation. It is possible cause of using hierarchy tag structure and annotations.&lt;br /&gt;
&lt;br /&gt;
== Schema file  == &lt;br /&gt;
Header (version info)&amp;lt;br&amp;gt;&lt;br /&gt;
Topleveltags in alphabetical order. &amp;lt;br&amp;gt;&lt;br /&gt;
Each tag contains possible tags and keys. and number of possible inclusions of tag. (min and max values)&amp;lt;br&amp;gt;&lt;br /&gt;
Each key contains name of key, type of value, or list of possible values and additional information (is this key mandatory, default value, value possible). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Frequently used tags are organized in global list. &lt;br /&gt;
Tags which list of keys differs, but name are the same, are in different parent tags, and can not be in global list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Types:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
boolean&amp;lt;br&amp;gt;&lt;br /&gt;
integer&amp;lt;br&amp;gt;&lt;br /&gt;
fnum   (formula number)&amp;lt;br&amp;gt;&lt;br /&gt;
float&amp;lt;br&amp;gt;&lt;br /&gt;
string&amp;lt;br&amp;gt;&lt;br /&gt;
Tstring  (for Translated string)&amp;lt;br&amp;gt;&lt;br /&gt;
LuaCode&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;Predefined values&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Additional Information&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
!M - is mandatory (for key)&amp;lt;br&amp;gt;&lt;br /&gt;
!(value) - default value. (for non-mandatory keys)&amp;lt;br&amp;gt;&lt;br /&gt;
!G - tag from global list.&lt;br /&gt;
!S - For special tags,&lt;br /&gt;
!&amp;lt;0,1&amp;gt; number of min and max occurs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 [scenario]&lt;br /&gt;
       [label]&lt;br /&gt;
                                          !G&lt;br /&gt;
       [/label] &lt;br /&gt;
       [music]&lt;br /&gt;
                                          !G   &lt;br /&gt;
       [/music]&lt;br /&gt;
       [side]                             !&amp;lt;0,-1&amp;gt;&lt;br /&gt;
           controller=&amp;lt;human&amp;gt;|&amp;lt;ai&amp;gt;|&amp;lt;null&amp;gt; !(&amp;lt;ai&amp;gt;)           &lt;br /&gt;
           gold=integer                   !(100)&lt;br /&gt;
           side=integer                   !M&lt;br /&gt;
       [/side]&lt;br /&gt;
       [story]&lt;br /&gt;
       [/story]&lt;br /&gt;
       id=string                          !M&lt;br /&gt;
       name=Tstring &lt;br /&gt;
       next_scenario=string&lt;br /&gt;
       turns=integer                      !(-1) &lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
More examples:&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.wesnoth.org/GUICanvasWMLSchemaExample&lt;br /&gt;
&lt;br /&gt;
== Annotation ==&lt;br /&gt;
 /* &lt;br /&gt;
 * @TagName  name&lt;br /&gt;
 * @Global    #for global list tags&lt;br /&gt;
 * @TopLevel  #for top-level tags&lt;br /&gt;
 * @Special   #for tags, who depends on the parent tag&lt;br /&gt;
 * @MinOccurs number &lt;br /&gt;
 * @MaxOccurs number &lt;br /&gt;
 */&lt;br /&gt;
 some source about tag&lt;br /&gt;
 /* &lt;br /&gt;
 * @Key key&lt;br /&gt;
 * @Default value&lt;br /&gt;
 * @Type type&lt;br /&gt;
 * @Mandatory&lt;br /&gt;
 */ &lt;br /&gt;
 some source about key&lt;br /&gt;
 /* &lt;br /&gt;
 *@Value value&lt;br /&gt;
 */&lt;br /&gt;
 some source about value&lt;br /&gt;
&lt;br /&gt;
== How It All Work? ==&lt;br /&gt;
After a patch the developer runs SchemaGeneratorTool to regenerate schema file. I want to include the special build target in building system, trying to avoid the whole regenerating, only current updates.&lt;br /&gt;
 &lt;br /&gt;
If somebody want to validate his WML document he runs ValidatorTool, and receives Error Messages like &lt;br /&gt;
 source-file-name:lineno:column: In file %filename&lt;br /&gt;
 source-file-name:lineno:column: in  toplevel tag [scenario]&lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;id&amp;quot; is misssing&lt;br /&gt;
 source-file-name:lineno:column: in tag [side] &lt;br /&gt;
 source-file-name:lineno:column: Mandatory key &amp;quot;side&amp;quot; is misssing  &lt;br /&gt;
 source-file-name:lineno:column: Unknown value in key &amp;quot;controller&amp;quot;  %wrong_value found, but %value_list possible&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&amp;lt;b&amp;gt;8.04 - 22.05 Getting into the project time&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving annotations list. Getting as close as possible to WML documents. Studying how parser works.&lt;br /&gt;
&lt;br /&gt;
I have exams in this period of time, and max number of exams can be 5, so I can't plan much more. And I even have no timeline of exams, it will be available only in June.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;b&amp;gt;23.05 - 30.06 Schema generating tool&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
includes&lt;br /&gt;
#23.05 - 15.06 Annotation parsing part.&amp;lt;br&amp;gt;&lt;br /&gt;
#16.06 - 30.06 Schema generating part.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.07 - 15.08 Document validating tool&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
# 1.07 - 10.07  Hierarchy structures. &lt;br /&gt;
# 11.07 - 25.07 Document parsing part.&lt;br /&gt;
# 26.07 - 5.08  Validation.&lt;br /&gt;
# 6.08 - 10.08  Data structures refactoring. (If nesessary). &lt;br /&gt;
# 10.08 - 15.08 Errors messages generating part. &lt;br /&gt;
# 15.08 - 20.08 Testing. Fixing bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;16.08 - 31.08 Afterwork&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#Testing&amp;lt;br&amp;gt;&lt;br /&gt;
#Fixing bugs&amp;lt;br&amp;gt;&lt;br /&gt;
#Documentation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;If any time left&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Improving build-systems integration, making more error types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;In far future&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Maybe a validator for unpreprocessed WML.&lt;br /&gt;
&lt;br /&gt;
== Patches and commits ==&lt;br /&gt;
No one at this moment of time.&lt;br /&gt;
&lt;br /&gt;
==Answers to those questions==&lt;br /&gt;
&amp;lt;h3&amp;gt;Basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Write a small introduction to yourself.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Hello. My name is Nick Sytyi . I study Computer Engineering at the Chernigiv Technological University. I want to participate in Google Summer of Code and gain expierence in C++ and game development. I like this project and I want to encahnce it.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.2) State your preferred email address.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
nsytyi@gmail.com &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
IRC: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
Wesnoth forums: none for now&lt;br /&gt;
Wesnoth wiki: Sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
GNA: sytyi &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.4) Why do you want to participate in summer of code?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I would like to try some serious work. I want to grow in C++ development, open source, team work and game development experience.&lt;br /&gt;
I think the experience I gain here, will help me in future.&lt;br /&gt;
I hope I come in project  for long period of my life, because it is my dream (to develop a game) since when I was child.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.5) What are you studying, subject, level and school?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No patches for now. Maybe the situation will change for better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Experience&amp;lt;/h3&amp;gt;&lt;br /&gt;
good knowledge of C++, Java, computer science concepts, small experience of programming translators, olympiad projects with MCS-51 and AVR stends (I know it is insignificant but it gave me experience in quick, well synchronized C programs).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.1) What programs/software have you worked on before?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Mostly, I'am working on  website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. Our university has command projects, and now I am a team leader for a simple course work So I was to learn SVN features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I haven't participated in the GSoC before. This is my first  chance to participate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4) Open Source&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.4.1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I use Ubuntu, Mozilla, Eclipse, Qt , but Wesnoth is the first open source project I am involved with.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5) Gaming experience - Are you a gamer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes, I am a gamer )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.1) What type of gamer are you?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Slow strategic gamer. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.2) What type of games?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I prefer turn-based strategy games or RPG with good story.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.3) What type of opponents do you prefer?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can’t say  I play good. So I prefer good opponents which sometimes teach me some tricks. When I’m beaten, I analyze, why this occurred. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.4) Are you more interested in story or gameplay?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Story is more interesting for me. But if gameplay is very booooring ………….&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.&lt;br /&gt;
We do not plan to favor Wesnoth players as such, but some particular projects require a good feeling for the game which is hard to get without having played intensively.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have heard  about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Communication skills&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can read and write English with few mistakes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I just ignore rough statements in address. In a team I takes the second role.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.3) Do you give constructive advice?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Maybe. Sometimes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.4) Do you receive advice well?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3.5) Are you good at sorting useful criticisms from useless ones?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Project&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Yes. It is interesting to make tools for non-programmers content developers. I want to concentrate on grammar of WML. And if I have free time after all of this, maybe a simple WML GUI or including WML validation into existing GUI’s. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.2) If you have invented your own project, please describe the project and the scope.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.3) Why did you choose this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to enchance project. &lt;br /&gt;
I am interesting in translations. WML validation seemed to me a perfect task to study the main project and a perfect task for a starter not confident in his abilities.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.&amp;lt;br/&amp;gt;&lt;br /&gt;
3-4 days in archaelogic expedition near 15 of August.&amp;lt;br/&amp;gt;&lt;br /&gt;
Two times 3-4 days on bike down the river in July. I can not say  current time now, it depends on the last exam and my friends. More possible it will be after stipendy at  25 of each month&amp;lt;br/&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.5) Include as much technical detail about your implementation as you can&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I want to write two tools. One to generate Schema file from the annotated source. and another to validate WML documents using schema. Tags are organized in a hierarchical structure.&amp;lt;br&amp;gt;     &lt;br /&gt;
&amp;lt;b&amp;gt;4.6) What do you expect to gain from this project?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I expect to gain experience in game development and maybe a continious work with Wesnoth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Practical considerations&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.1) Are you familiar with any of the following tools or languages?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;* Subversion (used for all commits) Yes.&amp;lt;br/&amp;gt;&lt;br /&gt;
 * C++ (language used for all the normal source code)Yes STL. QT. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * Python (optional, mainly used for tools) no. &amp;lt;br/&amp;gt;&lt;br /&gt;
 * build environments (eg cmake/autotools/scons) 'make' - yes, 'scons' no. 'autotools' - no&amp;lt;br/&amp;gt;&lt;br /&gt;
 I don't know LUA and i'm studying WML now.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;5.2) Which tools do you normally use for development? Why do you use them?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Eclipse under Windows and Ubuntu. Qt. Notepad. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.3) What programming languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)&lt;br /&gt;
I know a bit of sh/javascript/pascal/c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.4) What spoken languages are you fluent in?&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I can speak in Ukrainian (native), in Russian (native), English.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
I'm in UTC+3 timezone in summer. I am normally awake from +11 UTC to +02 UTC, and most of that time I'm at home or some anywhere with wi-fi, so I'm able to be in IRC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;5.6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Skype : azcure&lt;br /&gt;
 &lt;br /&gt;
== Grammar == &lt;br /&gt;
I wrote grammar cause of misunderstood. So it does not influence the main idea, etc. But it may be useful to some people. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Grammar needs some improvements in types of key values, but the main work is done.&amp;lt;br&amp;gt; If you see any mistake here, please contact me&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for unpreprocessed WML&amp;lt;/b&amp;gt; http://en.wikipedia.org/wiki/EBNF &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 MacroCall = &amp;quot;{&amp;quot;, Name,&amp;quot; &amp;quot;,{ &amp;quot; &amp;quot; }, MacroValue {, MacroValue} , &amp;quot;}&amp;quot;&lt;br /&gt;
 MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, &amp;quot;ENDDEF&amp;quot;;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 MacroVar = Name;&lt;br /&gt;
 IFBegin = &amp;quot;#ifdef &amp;quot; | &amp;quot;#ifhave &amp;quot; | &amp;quot;#ifndef &amp;quot; | &amp;quot;#ifnhave &amp;quot; | &amp;quot;#ifver &amp;quot; | &amp;quot;#ifnver &amp;quot; ;&lt;br /&gt;
 IFElse = &amp;quot;#else &amp;quot; ;&lt;br /&gt;
 IFEnd = &amp;quot;#endif&amp;quot; ;&lt;br /&gt;
 DEFINE = &amp;quot;#define &amp;quot; ;&lt;br /&gt;
 ENDDEF = &amp;quot;#enddef&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;EBNF form for preprocessed WML&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Document = [ Header ], { StmntList } ;&lt;br /&gt;
 StmntList = Statement, EOL, { StmntList } ;&lt;br /&gt;
 Statement = { ( Tag | TextDomain ) }  ;&lt;br /&gt;
 Tag = TagStart { ( Tag | Key ) }, TagEnd ;&lt;br /&gt;
 Key = Name, { Name} ,&amp;quot;=&amp;quot;, KeyValue, { KeyValue },  EOL;&lt;br /&gt;
 TextDomain = &amp;quot;#textdomain &amp;quot;, Name ;&lt;br /&gt;
 TagStart = &amp;quot;[&amp;quot;,[ &amp;quot;+&amp;quot; ], TagName , &amp;quot;]&amp;quot; ;&lt;br /&gt;
 TagEnd = &amp;quot;[/&amp;quot;, TagName ,&amp;quot;]&amp;quot; ;&lt;br /&gt;
 (* Can TagName contain uppercase?  *)&lt;br /&gt;
 TagName = LowerCaseLetter | &amp;quot;_&amp;quot;, { LowerCaseLetter | Special  | &amp;quot;_&amp;quot;};&lt;br /&gt;
 KeyValue = ( Name | Substitution | Strings );&lt;br /&gt;
 Substitution = &amp;quot;$&amp;quot;,  (Name | Formula) ;&lt;br /&gt;
 Formula = &amp;quot;(&amp;quot;, Name, &amp;quot;)&amp;quot; ;&lt;br /&gt;
 Name = Letter, { Letter };&lt;br /&gt;
 Identifier = Letter, { Letter | Digit | Special };&lt;br /&gt;
 Strings = ( String | TranslatedString ), { &amp;quot;+&amp;quot;, ( String | TranslatedString ) };&lt;br /&gt;
 String = '&amp;quot;', { ( Letter | Digit | Symbols) },'&amp;quot;';&lt;br /&gt;
 TranslatedString = &amp;quot;_&amp;quot;, String;&lt;br /&gt;
 Letter = (UpperCaseLetter | LowerCaseletter | &amp;quot;_&amp;quot; );&lt;br /&gt;
 UpperCaseLetter = &amp;quot;A&amp;quot; | &amp;quot;B&amp;quot; | &amp;quot;C&amp;quot; | &amp;quot;D&amp;quot; | &amp;quot;E&amp;quot; | &amp;quot;F&amp;quot; | &amp;quot;G&amp;quot; | &amp;quot;H&amp;quot; | &amp;quot;I&amp;quot; | &amp;quot;J&amp;quot; | &amp;quot;K&amp;quot; | &amp;quot;L&amp;quot; | &amp;quot;M&amp;quot; | &amp;quot;N&amp;quot; | &amp;quot;O&amp;quot; | &amp;quot;P&amp;quot; | &amp;quot;Q&amp;quot; | &amp;quot;R&amp;quot; | &amp;quot;S&amp;quot; | &amp;quot;T&amp;quot; | &amp;quot;U&amp;quot; | &amp;quot;V&amp;quot; | &amp;quot;W&amp;quot; | &amp;quot;X&amp;quot; | &amp;quot;Y&amp;quot; | &amp;quot;Z&amp;quot; ;&lt;br /&gt;
 LowerCaseLetter = &amp;quot;a&amp;quot; | &amp;quot;b&amp;quot; | &amp;quot;c&amp;quot; | &amp;quot;d&amp;quot; | &amp;quot;e&amp;quot; | &amp;quot;f&amp;quot; | &amp;quot;g&amp;quot; | &amp;quot;h&amp;quot; | &amp;quot;i&amp;quot; | &amp;quot;j&amp;quot; | &amp;quot;k&amp;quot; | &amp;quot;l&amp;quot; | &amp;quot;m&amp;quot; | &amp;quot;n&amp;quot; | &amp;quot;o&amp;quot; | &amp;quot;p&amp;quot; | &amp;quot;q&amp;quot; | &amp;quot;r&amp;quot; | &amp;quot;s&amp;quot; | &amp;quot;t&amp;quot; | &amp;quot;u&amp;quot; | &amp;quot;v&amp;quot; | &amp;quot;w&amp;quot; | &amp;quot;x&amp;quot; | &amp;quot;y&amp;quot; | &amp;quot;z&amp;quot; ;&lt;br /&gt;
 Digit = &amp;quot;0&amp;quot; | &amp;quot;1&amp;quot; | &amp;quot;2&amp;quot; | &amp;quot;3&amp;quot; | &amp;quot;4&amp;quot; | &amp;quot;5&amp;quot; | &amp;quot;6&amp;quot; | &amp;quot;7&amp;quot; | &amp;quot;8&amp;quot; | &amp;quot;9&amp;quot; ;&lt;br /&gt;
 Sign = &amp;quot;+&amp;quot; | &amp;quot;-&amp;quot;  ;&lt;br /&gt;
 WhiteSpace = &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; , { &amp;quot; &amp;quot; | &amp;quot;\t&amp;quot; } ;&lt;br /&gt;
 Special = &amp;quot;-&amp;quot; | &amp;quot;:&amp;quot; ;&lt;br /&gt;
 EOL = { &amp;quot;\r&amp;quot; },  &amp;quot;\n&amp;quot; , {  &amp;quot;\r&amp;quot;|&amp;quot;\n&amp;quot;  } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.&amp;lt;/b&amp;gt;&lt;br /&gt;
[[Category:Summer of Code]]&lt;br /&gt;
&lt;br /&gt;
=SoC Application=&lt;br /&gt;
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/nicksytyi/1 - Battle for Wesnoth - Google Summer of Code Application]&lt;/div&gt;</summary>
		<author><name>Sytyi</name></author>
		
	</entry>
</feed>