Skip to content

Latest commit

 

History

History
70 lines (53 loc) · 1.54 KB

File metadata and controls

70 lines (53 loc) · 1.54 KB
<comment> ::= "(OwO)".*"(T_T)"

<identifier> ::= [a-Z]*

<intger> ::= [0-9]*

<delimiter> ::= ("~") 

<float> ::= <integer> "." <integer>

<function-declaration> ::= <identifier> "-" <type> ":" (<identifier> "-" <type>)* "no jutsu" (<delimiter>) 
						(<statement>)* 
						"!!"

<function-call> ::= <identifier> ":" <expr>+ "no jutsu"

<main-function> ::= "senpai no jutsu" (<delimiter>) (<statement>)* ~!

<expr> ::= "yosh" | "iee"
		| "namae" //used for getting the id of the thread
		| "(" <expr> ")"
		| <identifier>
		| <function-call>
		| <expr> <binary-operator> <expr> 
		| <float>
		| <integer>

//sayonara is our return expression
<return-expr> ::= "sayonara" (<expr> "chan")?

<selection-statement> ::= "nani" <expr> (<delimiter>) (<statement>)* "~?"
		| "nani" <expr> (<delimiter>) (<statement>)* "baka" (<delimiter>) (<statement>)* "~?"
		| "nani" <expr> (<delimiter>) (<statement>)* "baka" <selection-statement>

//hopefully can make this better
<while-statements> ::= "doki" <expr> (<delimiter>) (<statement>)* "~~"

<lambad-thread> ::= shadow clone jutsu <integer> <delimiter> (<statement>)* "!!"

<statement> ::= <while-statement> 
		| <selection-statement> 
		| <expr> <delimiter>
		| <return-expr> <delimiter>
		| <variable-declaration>
		| <lambda-thread>

<type> ::= "san"
		| "kun"
		| "sama"

<variable-declaration> ::= <identifier> "-" <type>  "wa" <expr> "desu" <delimiter>

//must expand this!
<binary-operator> ::= "desu ga" 
		| "to" 
		| "||" 
		| "+" 
		| "-" 
		| "/" 
		| "*" 
		| "%"
		| ">"
		| "<"
		| "<="
		| ">="
		| ">>"
		| "<<"