diff --git a/common/prompt.peg b/common/prompt.peg new file mode 100644 index 00000000..f91b1a51 --- /dev/null +++ b/common/prompt.peg @@ -0,0 +1,14 @@ +// PEGjs grammar + +Prompt = head:Token tokens:(Split _ token:Token { return token; })+ { return [head, ...tokens]; } + +Token = IncreaseToken / SmallIncreaseToken / DecreaseToken / PlainToken; + +IncreaseToken = '(' _ token:Token _ ')' { return [token[0], token[1] * 1.1]; } +SmallIncreaseToken = '{' _ token:Token _ '}' { return [token[0], token[1] * 1.05]; } +DecreaseToken = '[' _ token:Token _ ']' { return [token[0], token[1] * 0.9]; } + +PlainToken = [a-zA-Z0-9 ]+ { return [text(), 1.0]; } + +Split = [, \t\n\r]+ +_ = [ \t\n\r]* \ No newline at end of file