Japanese Sentence Grammar (simplified EBNF)
Sentence ::= Clause+ Ending
Clause ::= Topic? Subject? Object? IndirectObject? Modifier* Predicate
Topic ::= Noun "は"
Subject ::= Noun "が"
Object ::= Noun "を"
IndirectObject ::= Noun "に" | Noun "へ" | Noun "で"
Modifier ::= Adjective | Noun "の" | RelativeClause
RelativeClause ::= Clause Noun
Predicate ::= VerbForm | CopulaForm
VerbForm ::= Verb Politeness? Tense Aspect Mood
CopulaForm ::= Noun | Adjective ; followed by "だ" | "です"
Politeness ::= "ます" | ε
Tense ::= "た" | ε ; past or present
Aspect ::= "ている" | ε ; progressive
Mood ::= "でしょう" | "かもしれない" | ε
Ending ::= "。" | "?" | "!"
Noun ::= "私" | "彼" | "猫" | "犬" | "本" | "映画" | "学校" | ...
Adjective ::= "大きい" | "小さい" | "新しい" | "古い" | "きれいな" | ...
Verb ::= "食べる" | "行く" | "見る" | "読む" | "書く" | "話す" | ...
Sample Sentences (parsed)
私 は 本 を 読みます。 → Topic = "私", Object = "本", Predicate = "読む"+"ます" (polite present)
猫 が 魚 を 食べた。 → Subject = "猫", Object = "魚", Predicate = "食べる"+"た" (plain past)
彼 が 学校 へ 行っている。 → Subject = "彼", Destination = "学校へ", Predicate = "行く"+"ている" (progressive)
新しい 本 を 買いました。 → Modifier = "新しい" (adjective), Object = "本", Predicate = "買う"+"ました" (polite past)
私 が 昨日 見た 映画 は 面白かった。 → Relative clause = "私が昨日見た" modifying "映画", Topic = "映画", Predicate = "面白い"+"かった" (past)