summaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2015-11-09 11:24:06 -0800
committerAlon Zakai <alonzakai@gmail.com>2015-11-09 11:24:06 -0800
commit6098d7c270a3b16c4c68dd6996597eae2a74a5f4 (patch)
tree40132a4df766df171d7541c3278e1506adf07f18 /src/parser.cpp
parent2c6f7cfa8156448e5ce82ebd1a7526b523dfc7f0 (diff)
downloadbinaryen-6098d7c270a3b16c4c68dd6996597eae2a74a5f4.tar.gz
binaryen-6098d7c270a3b16c4c68dd6996597eae2a74a5f4.tar.bz2
binaryen-6098d7c270a3b16c4c68dd6996597eae2a74a5f4.zip
restructure code, put emscripten-optimizer stuff in its own dir
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp144
1 files changed, 0 insertions, 144 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
deleted file mode 100644
index 06e455b0b..000000000
--- a/src/parser.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-
-#include "parser.h"
-
-namespace cashew {
-
-// common strings
-
-IString TOPLEVEL("toplevel"),
- DEFUN("defun"),
- BLOCK("block"),
- STAT("stat"),
- ASSIGN("assign"),
- NAME("name"),
- VAR("var"),
- CONST("const"),
- CONDITIONAL("conditional"),
- BINARY("binary"),
- RETURN("return"),
- IF("if"),
- ELSE("else"),
- WHILE("while"),
- DO("do"),
- FOR("for"),
- SEQ("seq"),
- SUB("sub"),
- CALL("call"),
- NUM("num"),
- LABEL("label"),
- BREAK("break"),
- CONTINUE("continue"),
- SWITCH("switch"),
- STRING("string"),
- INF("inf"),
- NaN("nan"),
- TEMP_RET0("tempRet0"),
- UNARY_PREFIX("unary-prefix"),
- UNARY_POSTFIX("unary-postfix"),
- MATH_FROUND("Math_fround"),
- SIMD_FLOAT32X4("SIMD_Float32x4"),
- SIMD_FLOAT64X2("SIMD_Float64x2"),
- SIMD_INT8X16("SIMD_Int8x16"),
- SIMD_INT16X8("SIMD_Int16x8"),
- SIMD_INT32X4("SIMD_Int32x4"),
- PLUS("+"),
- MINUS("-"),
- OR("|"),
- AND("&"),
- XOR("^"),
- L_NOT("!"),
- B_NOT("~"),
- LT("<"),
- GE(">="),
- LE("<="),
- GT(">"),
- EQ("=="),
- NE("!="),
- DIV("/"),
- MOD("%"),
- MUL("*"),
- RSHIFT(">>"),
- LSHIFT("<<"),
- TRSHIFT(">>>"),
- TEMP_DOUBLE_PTR("tempDoublePtr"),
- HEAP8("HEAP8"),
- HEAP16("HEAP16"),
- HEAP32("HEAP32"),
- HEAPF32("HEAPF32"),
- HEAPU8("HEAPU8"),
- HEAPU16("HEAPU16"),
- HEAPU32("HEAPU32"),
- HEAPF64("HEAPF64"),
- F0("f0"),
- EMPTY(""),
- FUNCTION("function"),
- OPEN_PAREN("("),
- OPEN_BRACE("["),
- OPEN_CURLY("{"),
- CLOSE_CURLY("}"),
- COMMA(","),
- QUESTION("?"),
- COLON(":"),
- CASE("case"),
- DEFAULT("default"),
- DOT("dot"),
- PERIOD("."),
- NEW("new"),
- ARRAY("array"),
- OBJECT("object"),
- THROW("throw"),
- SET("=");
-
-IStringSet keywords("var const function if else do while for break continue return switch case default throw try catch finally true false null new");
-
-const char *OPERATOR_INITS = "+-*/%<>&^|~=!,?:.",
- *SEPARATORS = "([;{}";
-
-int MAX_OPERATOR_SIZE = 3;
-
-std::vector<OperatorClass> operatorClasses;
-
-static std::vector<std::unordered_map<IString, int>> precedences; // op, type => prec
-
-struct Init {
- Init() {
- // operators, rtl, type
- operatorClasses.push_back(OperatorClass(".", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("! ~ + -", true, OperatorClass::Prefix));
- operatorClasses.push_back(OperatorClass("* / %", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("+ -", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("<< >> >>>", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("< <= > >=", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("== !=", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("&", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("^", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("|", false, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass("? :", true, OperatorClass::Tertiary));
- operatorClasses.push_back(OperatorClass("=", true, OperatorClass::Binary));
- operatorClasses.push_back(OperatorClass(",", true, OperatorClass::Binary));
-
- precedences.resize(OperatorClass::Tertiary + 1);
-
- for (size_t prec = 0; prec < operatorClasses.size(); prec++) {
- for (auto curr : operatorClasses[prec].ops) {
- precedences[operatorClasses[prec].type][curr] = prec;
- }
- }
- }
-};
-
-Init init;
-
-int OperatorClass::getPrecedence(Type type, IString op) {
- return precedences[type][op];
-}
-
-bool OperatorClass::getRtl(int prec) {
- return operatorClasses[prec].rtl;
-}
-
-bool isIdentInit(char x) { return (x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z') || x == '_' || x == '$'; }
-bool isIdentPart(char x) { return isIdentInit(x) || (x >= '0' && x <= '9'); }
-
-} // namespace cashew
-