* Implementation of GiNaC's parser. */
/*
- * GiNaC Copyright (C) 1999-2009 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
return e;
}
-extern numeric* _num_1_p;
-extern ex _ex0;
+/// lst_expr: '{' expression { ',' expression } '}'
+ex parser::parse_lst_expr()
+{
+ get_next_tok(); // eat {.
+
+ lst list;
+ if (token != '}') {
+ while (true) {
+ ex e = parse_expression(); // expression();
+ list.append(e);
+
+ if (token == '}') {
+ break;
+ }
+
+ if (token != ',') {
+ Parse_error("expected '}'");
+ }
+
+ get_next_tok(); // eat ','.
+ }
+ }
+ // Eat the '}'.
+ get_next_tok();
+
+ return list;
+}
+
+extern const ex _ex0;
/// unary_expr: [+-] expression
ex parser::parse_unary_expr()
return parse_number_expr();
case '(':
return parse_paren_expr();
+ case '{':
+ return parse_lst_expr();
case '-':
case '+':
return parse_unary_expr();