|
|
(51 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | {{SoC2011Student_2|Sytyi|SoC_Ideas_Schema_Validation2011}}
| + | proposal migrated here: [[GSoC_2011_Sytyi]] |
− | This page is under development. Proposal summary is under development. Please forgive for mistakes.
| |
− | | |
− | == Description ==
| |
− | <h4>Sytyi - WML Validator</h4>
| |
− | The main idea of WML Validator is grammar based lexic and syntax validator on C++ generating '''USER-FRIENDLY''' error messages.
| |
− | | |
− | == IRC ==
| |
− | Sytyi
| |
− | | |
− | == Proposal Summary ==
| |
− | I want to write a grammar based validator. One tool will prepare schema file containing all tags, keys and possible values from special commented source, and validator will read schema file on the beginning of the work and then, while parsing, just compare is this value allowed here.
| |
− | | |
− | | |
− | == Schema file ==
| |
− | Header (version info)<br>
| |
− | Topleveltags in alphabetical order. <br>
| |
− | Each tag contains possible tags and keys. <br>
| |
− | Each key contains list of possible values and | or additional information (is this key mandatory, default value, numeric or string value possible). <br>
| |
− | | |
− | <b>Types:</b><br>
| |
− | boolean<br>
| |
− | integer<br>
| |
− | float<br>
| |
− | string<br>
| |
− | Tstring (for Translated string)<br>
| |
− | LuaCode<br>
| |
− | | |
− | <b>Additional Information</b><br>
| |
− | !M - is mandatory (for key)<br>
| |
− | !(value) - default value. (for non-mandatory keys)<br>
| |
− | | |
− | Example
| |
− | [scenario]
| |
− | [label]
| |
− | text=Tstring !M
| |
− | y=integer !(0)
| |
− | x=integer !(0)
| |
− | [/label]
| |
− | [music]
| |
− | [/music]
| |
− | [side]
| |
− | gold=integer !(100)
| |
− | side=integer !M
| |
− | [/side]
| |
− | [story]
| |
− | [/story]
| |
− | id=string !M
| |
− | name=Tstring
| |
− | next_scenario=string
| |
− | turns=integer !(-1)
| |
− | [/scenario]
| |
− | | |
− | == Grammar ==
| |
− | <b>Grammar needs some improvements in types of key values, but the main work is done.<br> If you see any mistake here, please contact me</b><br>
| |
− | <b>EBNF form for unpreprocessed WML</b> http://en.wikipedia.org/wiki/EBNF <br>
| |
− | | |
− | Document = [ Header ], { StmntList } ;
| |
− | StmntList = Statement, EOL, { StmntList } ;
| |
− | Statement = { ( Tag | MacroCall | MacroDefine | TextDomain | PreprocIf ) } ;
| |
− | Tag = TagStart { ( Tag | Key | MacroCall | MacroDefine | TextDomain | PreprocIf ) }, TagEnd ;
| |
− | Key = Name, { Name} ,"=", KeyValue, { KeyValue }, EOL;
| |
− | MacroCall = "{", Name," ",{ " " }, MacroValue {, MacroValue} , "}"
| |
− | MacroDefine = DEFINE, Name, MacroVar {, MacroVar} , StmntList, "ENDDEF";
| |
− | TextDomain = "#textdomain ", Name ;
| |
− | PreprocIf = (IFBegin, StmntList, [IFElse, StmntList,] IFEnd) | (Undef, MacroName);
| |
− | TagStart = "[",[ "+" ], TagName , "]" ;
| |
− | TagEnd = "[/", TagName ,"]" ;
| |
− | (* Can TagName contain uppercase? *)
| |
− | TagName = LowerCaseLetter | "_", { LowerCaseLetter | Special | "_"};
| |
− | KeyValue = ( Name | Substitution | Strings );
| |
− | Substitution = "$", (Name | Formula) ;
| |
− | Formula = "(", Name, ")" ;
| |
− | MacroVar = Name;
| |
− | IFBegin = "#ifdef " | "#ifhave " | "#ifndef " | "#ifnhave " | "#ifver " | "#ifnver " ;
| |
− | IFElse = "#else " ;
| |
− | IFEnd = "#endif" ;
| |
− | DEFINE = "#define " ;
| |
− | ENDDEF = "#enddef" ;
| |
− | Name = Letter, { Letter };
| |
− | Identifier = Letter, { Letter | Digit | Special };
| |
− | Strings = ( String | TranslatedString ), { "+", ( String | TranslatedString ) };
| |
− | String = '"', { ( Letter | Digit | Symbols) },'"';
| |
− | TranslatedString = "_", String;
| |
− | Letter = (UpperCaseLetter | LowerCaseletter | "_" );
| |
− | UpperCaseLetter = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" ;
| |
− | LowerCaseLetter = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" ;
| |
− | Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
| |
− | Sign = "+" | "-" ;
| |
− | WhiteSpace = " " | "\t" , { " " | "\t" } ;
| |
− | Special = "-" | ":" ;
| |
− | EOL = { "\r" }, "\n" , { "\r"|"\n" }
| |
− | | |
− | <b>EBNF form for preprocessed WML</b> <br>
| |
− | | |
− | Document = [ Header ], { StmntList } ;
| |
− | StmntList = Statement, EOL, { StmntList } ;
| |
− | Statement = { ( Tag | TextDomain ) } ;
| |
− | Tag = TagStart { ( Tag | Key ) }, TagEnd ;
| |
− | Key = Name, { Name} ,"=", KeyValue, { KeyValue }, EOL;
| |
− | TextDomain = "#textdomain ", Name ;
| |
− | TagStart = "[",[ "+" ], TagName , "]" ;
| |
− | TagEnd = "[/", TagName ,"]" ;
| |
− | (* Can TagName contain uppercase? *)
| |
− | TagName = LowerCaseLetter | "_", { LowerCaseLetter | Special | "_"};
| |
− | KeyValue = ( Name | Substitution | Strings );
| |
− | Substitution = "$", (Name | Formula) ;
| |
− | Formula = "(", Name, ")" ;
| |
− | Name = Letter, { Letter };
| |
− | Identifier = Letter, { Letter | Digit | Special };
| |
− | Strings = ( String | TranslatedString ), { "+", ( String | TranslatedString ) };
| |
− | String = '"', { ( Letter | Digit | Symbols) },'"';
| |
− | TranslatedString = "_", String;
| |
− | Letter = (UpperCaseLetter | LowerCaseletter | "_" );
| |
− | UpperCaseLetter = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" ;
| |
− | LowerCaseLetter = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" ;
| |
− | Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
| |
− | Sign = "+" | "-" ;
| |
− | WhiteSpace = " " | "\t" , { " " | "\t" } ;
| |
− | Special = "-" | ":" ;
| |
− | EOL = { "\r" }, "\n" , { "\r"|"\n" }
| |
− | | |
− | <b>Thanks to Timotei Dolean for providing his works about WML grammar to Eclipse plugin.</b>
| |
− | | |
− | == Timeline ==
| |
− | 20.03 - 28.03. Grammar analysis<br>
| |
− | 29.03 - 08.04. Algoritm researching<br>
| |
− | 09.04 - 23.05. Improving grammar and parsing algoritm<br>
| |
− | Creating data structures and data containers<br>
| |
− | Lexic analysis tool<br>
| |
− | Refactoring data stuctures, if necessary<br>
| |
− | Syntax analysis tool<br>
| |
− | Testing<br>
| |
− | Fixing bugs<br>
| |
− | Improving<br>
| |
− | | |
− | == Patches and commits ==
| |
− | No one at this moment of time.
| |
− | | |
− | ==Answers to those questions==
| |
− | <h3>Basics</h3>
| |
− | | |
− | <b>Write a small introduction to yourself.</b><br/>
| |
− | Hello. My name is Nick Sytyi (Nick from the Nickita). I am 19, soon 20, and I live in Chernigiv, Ukraine. I study Computer Engineering at the Chernigiv Technological University.
| |
− | | |
− | <b>1.2) State your preferred email address.</b><br/>
| |
− | nsytyi@gmail.com
| |
− | | |
− | <b>1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it?</b><br/>
| |
− | IRC: Sytyi <br/>
| |
− | Wesnoth forums: none for now
| |
− | Wesnoth wiki: Sytyi <br/>
| |
− | GNA: sytyi <br/>
| |
− | | |
− | <b>1.4) Why do you want to participate in summer of code?</b><br/>
| |
− | I would like to try some serious work. I want to grow in C++, open source, team work and game development experience.
| |
− | I think the experience I gain here, will help me in future.
| |
− | 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.
| |
− | | |
− | <b>1.5) What are you studying, subject, level and school?</b><br/>
| |
− | | |
− | Computer Engineering, 3rd year Faculty of Electronic Informational Technologies, Chernigiv Technological University, Ukraine.
| |
− | | |
− | <b>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.</b><br/>
| |
− | | |
− | No patches for now. Maybe the situation will change for better.
| |
− | | |
− | <h3>Experience</h3>
| |
− | 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).
| |
− | | |
− | <b>2.1) What programs/software have you worked on before?</b><br/>
| |
− | Mostly, I'am working on website development using Java EE. Also, I've done little C++ projects writing simple data manipulating programs.
| |
− | | |
− | <b>2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)</b><br/>
| |
− | 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.
| |
− | | |
− | <b>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?</b><br/>
| |
− | I haven't participated in the GSoC before. This is my first chance to participate.
| |
− | | |
− | <b>2.4) Open Source</b><br/>
| |
− | | |
− | <b>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.</b><br/>
| |
− | | |
− | I use a lot of open source, but Wesnoth is the first open source project I am involved with.
| |
− | | |
− | <b>2.5) Gaming experience - Are you a gamer?</b><br/>
| |
− | | |
− | Yes, I am a gamer )
| |
− | | |
− | <b>2.5.1) What type of gamer are you?</b><br/>
| |
− | Slow strategic gamer.
| |
− | | |
− | <b>2.5.2) What type of games?</b><br/>
| |
− | I prefer turn-based strategy games or RPG with good story.
| |
− | | |
− | <b>2.5.3) What type of opponents do you prefer?</b><br/>
| |
− | 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.
| |
− | | |
− | <b>2.5.4) Are you more interested in story or gameplay?</b><br/>
| |
− | Story is more interesting for me. But if gameplay is very booooring ………….
| |
− | | |
− | <b>2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.
| |
− | 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.</b><br/>
| |
− | I have heard about Wesnoth first time at 18 March. It interested me, and sometimes, when I need a rest, I play a little.
| |
− | | |
− | <h3>Communication skills</h3>
| |
− | | |
− | <b>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.</b><br/>
| |
− | I can read and write English with few mistakes.
| |
− | | |
− | <b>3.2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.</b><br/>
| |
− | I just ignore rough statements in address. In a team I takes the second role.
| |
− | | |
− | <b>3.3) Do you give constructive advice?</b><br/>
| |
− | Maybe. Sometimes.
| |
− | | |
− | <b>3.4) Do you receive advice well?</b><br/>
| |
− | Yes
| |
− | | |
− | <b>3.5) Are you good at sorting useful criticisms from useless ones?</b><br/>
| |
− | Yes
| |
− | | |
− | <h3>Project</h3>
| |
− | | |
− | <b>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?</b><br/>
| |
− | 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.
| |
− | | |
− | <b>4.2) If you have invented your own project, please describe the project and the scope.</b><br/>
| |
− | | |
− | <b>4.3) Why did you choose this project?</b><br/>
| |
− | When I studied Google list of participating organizations, I read about your game first, I played a little, and then I want to help in
| |
− | 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.
| |
− | | |
− | <b>4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".</b><br/>
| |
− | I'll have 4 or 5 exams in June, but I hope to pass 3 of them out by auto.<br/>
| |
− | 3-4 days in archaelogic expedition near 15 of August.<br/>
| |
− | 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<br/>
| |
− | | |
− | <b>4.5) Include as much technical detail about your implementation as you can</b><br/>
| |
− | | |
− | <b>4.6) What do you expect to gain from this project?</b><br/>
| |
− | I expect to gain experience in game development and maybe a continious work with Wesnoth.
| |
− | | |
− | <b>4.7) What would make you stay in the Wesnoth community after the conclusion of SOC?</b><br/>
| |
− | Willing to “upgrade” myself. To know more. To work with interesting people on the interesting tasks.
| |
− | | |
− | <h3>Practical considerations</h3>
| |
− | | |
− | <b>5.1) Are you familiar with any of the following tools or languages?</b><br/>
| |
− | | |
− | <b>* Subversion (used for all commits)</b><br/>
| |
− | Eclipse plugin. Yes.<br/>
| |
− | <b>* C++ (language used for all the normal source code)</b><br/>
| |
− | Yes. STL. QT. <br/>
| |
− | <b>* Python (optional, mainly used for tools)</b><br/>
| |
− | no<br/>
| |
− | | |
− | <b>* build environments (eg cmake/autotools/scons)</b><br/>
| |
− | 'make' - yes, 'scons' no. 'autotools' - no<br/>
| |
− | I don't know LUA and i'm studying WML now.<br/>
| |
− | <b>5.2) Which tools do you normally use for development? Why do you use them?</b><br/>
| |
− | Eclipse under Windows and Ubuntu. Qt . Notepad.
| |
− | | |
− | <b>5.3) What programming languages are you fluent in?</b><br/>
| |
− | I have a little practice in Java (1 years of experience) and C/C++ (2 years of experience)
| |
− | I know a bit of sh/javascript/pascal/c
| |
− | | |
− | <b>5.4) What spoken languages are you fluent in?</b><br/>
| |
− | I can speak in Ukrainian (native), in Russian (native), English.
| |
− | | |
− | <b>5.5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)</b><br/>
| |
− | 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.
| |
− | | |
− | <b>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.</b><br/>
| |
− | Skype : azcure
| |
− | | |
− | [[Category:Summer of Code]]
| |