Comments (1)
Cool! Thanks for sharing. I was actually working on a grammar for wax too, in BNF, it isn't quite polished yet so I haven't put it in the repo. Seems working in that tool too!
/* WAX BNF (SUBSET, WIP) */
prgm ::= stmt | stmt prgm | comment | comment prgm
expr ::= atom | type | stmt | comment
stmt ::= (begin op end) | (begin op space params end)
params ::= expr | expr space params
atom ::= ident | int | float | str
/* symbols */
lparen ::= "(" | "[" | "{"
rparen ::= ")" | "]" | "}"
begin ::= (space lparen space) | (lparen space) | (space lparen) | lparen
end ::= (space rparen space) | (rparen space) | (space rparen) | rparen
space ::= (" " | "\t" | "\n") | ((" " | "\t" | "\n") space)
/* keywords */
op ::= "return" | "result" | "struct" | "insert" | "remove" | "extern" |
"param" | "local" | "while" | "alloc" | "slice" | "print" | "break" |
"func" | "then" | "else" | "call" | "cast" | "free" | "null" |
"get" | "set" | "let" | "for" | "asm" |
"if" | "do" | "<<" | ">>" | "=" | "&&" | "||" | ">=" | "<=" | "<>" | "??" |
"+" | "-" | "*" | "/" | "^" | "%" | "&" | "|" | "!" | "~" | "<" | ">" | "#" | "?"
/* types */
type ::= primtype | arrtype | maptype
primtype ::= "int" | "float" | "str"
vectype ::= begin "vec" space int space type end
arrtype ::= begin "arr" space type end
maptype ::= begin "map" space primtype space type end
/* charset, numbers etc */
ident ::= letter | letter alphanum
quote ::= "''"
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
numint ::= digit | digit numint
negint ::= "-" numint
chrint ::= "'" char "'"
int ::= chrint | numint | negint
smpflt ::= numint "." numint
sciflt ::= smpflt | smpflt "e" ( negint | numint )
float ::= "-" sciflt | sciflt
letter ::= "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" | "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" | "_"
char ::= letter | "[" | "]" | "{" | "}" | "(" | ")" | "<" | ">"
| "'" | "`" | "=" | "|" | "." | "," | ";" | " "
| "$" | "#" | "@" | "?" | "!" | ":" | "~" | "-"
| "^" | "/" | "+" | " "
/* etc.... */
alphanum ::= (letter | digit) | ((letter | digit) alphanum)
chars ::= char | char chars
str ::= (quote quote) | (quote chars quote)
comment ::= ";\n" | (";" chars "\n")
from wax.
Related Issues (18)
- Segfault while multi transpilation
- read or input from file or console HOT 2
- What string operations are supported? HOT 1
- Casting structs (or how to handle generic functions) HOT 1
- More languages transpiling support HOT 6
- Self-hosting Compiler HOT 3
- How to #include with C backend? HOT 1
- representing unions/enums
- WAT globals interpreted as locals HOT 3
- Convert wax back
- Wax compiler in wax - working implementation
- Feature Request - keep comments in generated code HOT 6
- [file error] cannot read file HOT 1
- Completion of error handling
- 向你致敬!
- Typo on `insert` operations HOT 1
- Does wax use short-circuit evaluation for boolean expressions? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wax.