From 29fd40002753c62b681343fbff0caee516013b1e Mon Sep 17 00:00:00 2001 From: The other zerg Date: Mon, 26 Sep 2022 13:53:17 +0200 Subject: [PATCH] Updated readme with the table of special characters --- README.md | 36 ++++++++++++++++++++++++++++++++++ WaifuGrammar/grammar/Waifu2.g4 | 1 + 2 files changed, 37 insertions(+) diff --git a/README.md b/README.md index 3c640e0..1035de5 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,39 @@ - - Final implementation in rust? Althought rantlr4 doesn't have rust support. So we will have to write parser and lexer from sctach + + +| character | meaning | p | z | +|-----------|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---| +| ~ | Unused | Negation | | +| ` | Unused | Infix maybe | | +| ! | Unused | unsafe unwrap, far future | | +| @ | Unused | maybe a valid starting character for ID | | +| # | Comments | Use # for single line ## for multiline comments | | +| $ | Unused | I don't like using this anywhere. Useless. | | +| % | OP_MOD | | | +| ^ | OP_POWER | Not xor. | | +| & | OP_AND | Not bitwise and. | | +| * | OP_MULT | | | +| ( | Grouping | Also range, non inclusive | | +| ) | Grouping | Also range, non inclusive | | +| - | OP_MINUS, Number negation | Maybe in ranges? - makes more sense than .. however that becomes a problem with negative numbers, unless we force the whistespace | | +| _ | Unused | Not sure, doesn't seem like a useful symbol. we could use it for digit grouping in integers like a lot of modern languages do | | +| = | OP_EQUALS | | | +| + | OP_PLUS | Not allowed as a number prefix. It's ugly and serves no purpose. +X is X. - is useful to flip the sign, we shouldn't add this 'for symetries' | | +| [ | Unused | Inclusive Range | | +| ] | Unused | Inclusive range | | +| { | Unused | Should be used to define a struct. { WS NL fields functions NL } NL | | +| } | Unused | struct close | | +| ; | Unused | no idea. | | +| : | Type prefix. very nice. | Very nice. | | +| " | Unused | No idea. | | +| ' | Strings | Should be used both for single and multiline strings. Should be able to specify multiple in a row in order to require that many to close without escaping any lower number of quotes in the string | | +| PIPE LOl | OP_OR | | | +| < | OP_LESS_THAN | | | +| > | OP_GREATER_THAN | | | +| , | Unused | ? | | +| . | Unused | Object navigation is an obvious one, but I'd like to explore other possiblities. One idea is to have . act as a "value of the expression in the line above, which would be very useful for using values without assigning them to variables, 'auto piping' | | +| ? | Unused | Prefix for 'if' and 'switch' like thing. ? EXPR NL INDENT (VAL WS expr)+ (_ WS expr)? | | +| / | OP_DIV | | | +| \ | UNUSED | I'm not 100% opposed but i don't like the idea of using this as an escape character. | | diff --git a/WaifuGrammar/grammar/Waifu2.g4 b/WaifuGrammar/grammar/Waifu2.g4 index a4af3cc..18c5165 100644 --- a/WaifuGrammar/grammar/Waifu2.g4 +++ b/WaifuGrammar/grammar/Waifu2.g4 @@ -74,6 +74,7 @@ functionParam: ID WS TYPE ; functionBody: ((INDENT expr | SingleLineComment | MultiLineComment) NL)+ ; functionCall: ID WS expr (WS expr)* ; + // expr expr: literal | ID