Skip to content

Instantly share code, notes, and snippets.

@grondilu
Last active February 27, 2023 10:58
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Embed
What would you like to do?
Wolfram language raku grammar
unit grammar Wolfram;
token TOP { <expression> }
token expression {
<head><arguments-list>?
}
token head { <atom><arguments-list>* }
token arguments-list { [ '[' ~ ']' <expression>* % [','\s*] ]* }
token atom {
<integer> |
<string> |
<ident>
}
token integer { <zero> | <positive-integer> | <negative-integer> }
token string { '"' ~ '"' <+graph+space-[\"]>*? }
token zero { 0 }
token positive-integer { '+'? <[1..9]> <digit>* }
token negative-integer { '-' <positive-integer> }
use Test;
ok Wolfram.parse('13');
ok Wolfram.parse('0');
ok Wolfram.parse('-1');
ok Wolfram.parse('"foo"');
ok Wolfram.parse('"foo bar"');
ok Wolfram.parse('Head[arg1, arg2]');
ok Wolfram.parse('foo[bar][arg1, arg2]');
ok Wolfram.parse('Head[foo[bar], arg2]');
done-testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment