Giter VIP home page Giter VIP logo

Comments (1)

LingDong- avatar LingDong- commented on May 28, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.