@galacean/engine-shaderlab 1.4.0-alpha.3 → 1.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -544,7 +544,7 @@
544
544
  /** , */ ETokenType[ETokenType["COMMA"] = 1032] = "COMMA";
545
545
  ETokenType[ETokenType["COLON"] = 1033] = "COLON";
546
546
  /** = */ ETokenType[ETokenType["EQUAL"] = 1034] = "EQUAL";
547
- ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
547
+ /** ; */ ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
548
548
  /** ! */ ETokenType[ETokenType["BANG"] = 1036] = "BANG";
549
549
  /** \- */ ETokenType[ETokenType["DASH"] = 1037] = "DASH";
550
550
  /** ~ */ ETokenType[ETokenType["TILDE"] = 1038] = "TILDE";
@@ -641,7 +641,8 @@
641
641
  };
642
642
  LexerUtils.isSpace = function isSpace(charCode) {
643
643
  return charCode === 9 || // Tab
644
- charCode === 10 || // Line break
644
+ charCode === 10 || // Line break - /n
645
+ charCode === 13 || // Carriage return -/r
645
646
  charCode === 32 // Space
646
647
  ;
647
648
  };
@@ -714,7 +715,11 @@
714
715
  var start = this.getCurPosition();
715
716
  this.advance(2);
716
717
  // single line comments
717
- while(this.getCurChar() !== "\n")this._advance();
718
+ var curChar = this.getCurChar();
719
+ while(curChar !== "\n" && curChar !== "\r" && !this.isEnd()){
720
+ this._advance();
721
+ curChar = this.getCurChar();
722
+ }
718
723
  this.skipCommentsAndSpace();
719
724
  return ShaderLab.createRange(start, this.getCurPosition());
720
725
  } else if (this.peek(2) === "/*") {
@@ -824,7 +829,8 @@
824
829
  BaseScanner._spaceCharsWithBreak = [
825
830
  " ",
826
831
  "\t",
827
- "\n"
832
+ "\n",
833
+ "\r"
828
834
  ];
829
835
  BaseScanner._spaceChars = [
830
836
  " ",
@@ -1416,101 +1422,103 @@
1416
1422
  // glsl
1417
1423
  NoneTerminal[NoneTerminal["global_declaration"] = 2002] = "global_declaration";
1418
1424
  NoneTerminal[NoneTerminal["variable_declaration"] = 2003] = "variable_declaration";
1419
- NoneTerminal[NoneTerminal["array_specifier_list"] = 2004] = "array_specifier_list";
1420
- NoneTerminal[NoneTerminal["array_specifier"] = 2005] = "array_specifier";
1421
- NoneTerminal[NoneTerminal["ext_builtin_type_specifier_nonarray"] = 2006] = "ext_builtin_type_specifier_nonarray";
1422
- NoneTerminal[NoneTerminal["precision_specifier"] = 2007] = "precision_specifier";
1423
- NoneTerminal[NoneTerminal["variable_identifier"] = 2008] = "variable_identifier";
1424
- NoneTerminal[NoneTerminal["variable_identifier_node"] = 2009] = "variable_identifier_node";
1425
- NoneTerminal[NoneTerminal["primary_expression"] = 2010] = "primary_expression";
1426
- NoneTerminal[NoneTerminal["postfix_expression"] = 2011] = "postfix_expression";
1427
- NoneTerminal[NoneTerminal["integer_expression"] = 2012] = "integer_expression";
1428
- NoneTerminal[NoneTerminal["function_call"] = 2013] = "function_call";
1429
- NoneTerminal[NoneTerminal["function_call_generic"] = 2014] = "function_call_generic";
1430
- NoneTerminal[NoneTerminal["function_call_header_no_parameters"] = 2015] = "function_call_header_no_parameters";
1431
- NoneTerminal[NoneTerminal["function_call_header_with_parameters"] = 2016] = "function_call_header_with_parameters";
1432
- NoneTerminal[NoneTerminal["function_call_parameter_list"] = 2017] = "function_call_parameter_list";
1433
- NoneTerminal[NoneTerminal["function_call_header"] = 2018] = "function_call_header";
1434
- NoneTerminal[NoneTerminal["function_identifier"] = 2019] = "function_identifier";
1435
- NoneTerminal[NoneTerminal["constructor_identifier"] = 2020] = "constructor_identifier";
1436
- NoneTerminal[NoneTerminal["unary_expression"] = 2021] = "unary_expression";
1437
- NoneTerminal[NoneTerminal["unary_operator"] = 2022] = "unary_operator";
1438
- NoneTerminal[NoneTerminal["multiplicative_expression"] = 2023] = "multiplicative_expression";
1439
- NoneTerminal[NoneTerminal["additive_expression"] = 2024] = "additive_expression";
1440
- NoneTerminal[NoneTerminal["shift_expression"] = 2025] = "shift_expression";
1441
- NoneTerminal[NoneTerminal["relational_expression"] = 2026] = "relational_expression";
1442
- NoneTerminal[NoneTerminal["equality_expression"] = 2027] = "equality_expression";
1443
- NoneTerminal[NoneTerminal["and_expression"] = 2028] = "and_expression";
1444
- NoneTerminal[NoneTerminal["inclusive_or_expression"] = 2029] = "inclusive_or_expression";
1445
- NoneTerminal[NoneTerminal["exclusive_or_expression"] = 2030] = "exclusive_or_expression";
1446
- NoneTerminal[NoneTerminal["logical_and_expression"] = 2031] = "logical_and_expression";
1447
- NoneTerminal[NoneTerminal["logical_xor_expression"] = 2032] = "logical_xor_expression";
1448
- NoneTerminal[NoneTerminal["logical_or_expression"] = 2033] = "logical_or_expression";
1449
- NoneTerminal[NoneTerminal["conditional_expression"] = 2034] = "conditional_expression";
1450
- NoneTerminal[NoneTerminal["assignment_expression"] = 2035] = "assignment_expression";
1451
- NoneTerminal[NoneTerminal["assignment_operator"] = 2036] = "assignment_operator";
1452
- NoneTerminal[NoneTerminal["expression"] = 2037] = "expression";
1453
- NoneTerminal[NoneTerminal["integer_constant_expression"] = 2038] = "integer_constant_expression";
1454
- NoneTerminal[NoneTerminal["integer_constant_expression_operator"] = 2039] = "integer_constant_expression_operator";
1455
- NoneTerminal[NoneTerminal["declaration"] = 2040] = "declaration";
1456
- NoneTerminal[NoneTerminal["function_prototype"] = 2041] = "function_prototype";
1457
- NoneTerminal[NoneTerminal["function_declarator"] = 2042] = "function_declarator";
1458
- NoneTerminal[NoneTerminal["function_header_with_parameters"] = 2043] = "function_header_with_parameters";
1459
- NoneTerminal[NoneTerminal["function_header"] = 2044] = "function_header";
1460
- NoneTerminal[NoneTerminal["function_parameter_list"] = 2045] = "function_parameter_list";
1461
- NoneTerminal[NoneTerminal["parameter_declarator"] = 2046] = "parameter_declarator";
1462
- NoneTerminal[NoneTerminal["parameter_declaration"] = 2047] = "parameter_declaration";
1463
- NoneTerminal[NoneTerminal["parameter_qualifier"] = 2048] = "parameter_qualifier";
1464
- NoneTerminal[NoneTerminal["parameter_type_specifier"] = 2049] = "parameter_type_specifier";
1465
- NoneTerminal[NoneTerminal["init_declarator_list"] = 2050] = "init_declarator_list";
1466
- NoneTerminal[NoneTerminal["single_declaration"] = 2051] = "single_declaration";
1467
- NoneTerminal[NoneTerminal["fully_specified_type"] = 2052] = "fully_specified_type";
1468
- NoneTerminal[NoneTerminal["type_qualifier"] = 2053] = "type_qualifier";
1469
- NoneTerminal[NoneTerminal["single_type_qualifier"] = 2054] = "single_type_qualifier";
1470
- NoneTerminal[NoneTerminal["storage_qualifier"] = 2055] = "storage_qualifier";
1471
- NoneTerminal[NoneTerminal["precision_qualifier"] = 2056] = "precision_qualifier";
1472
- NoneTerminal[NoneTerminal["interpolation_qualifier"] = 2057] = "interpolation_qualifier";
1473
- NoneTerminal[NoneTerminal["invariant_qualifier"] = 2058] = "invariant_qualifier";
1474
- NoneTerminal[NoneTerminal["type_specifier"] = 2059] = "type_specifier";
1475
- NoneTerminal[NoneTerminal["type_specifier_nonarray"] = 2060] = "type_specifier_nonarray";
1476
- NoneTerminal[NoneTerminal["type_specifier_no_prec"] = 2061] = "type_specifier_no_prec";
1477
- NoneTerminal[NoneTerminal["basic_type"] = 2062] = "basic_type";
1478
- NoneTerminal[NoneTerminal["struct_specifier"] = 2063] = "struct_specifier";
1479
- NoneTerminal[NoneTerminal["struct_declaration_list"] = 2064] = "struct_declaration_list";
1480
- NoneTerminal[NoneTerminal["struct_declaration"] = 2065] = "struct_declaration";
1481
- NoneTerminal[NoneTerminal["layout_qualifier"] = 2066] = "layout_qualifier";
1482
- NoneTerminal[NoneTerminal["struct_declarator_list"] = 2067] = "struct_declarator_list";
1483
- NoneTerminal[NoneTerminal["struct_declarator"] = 2068] = "struct_declarator";
1484
- NoneTerminal[NoneTerminal["identifier_list"] = 2069] = "identifier_list";
1485
- NoneTerminal[NoneTerminal["decl_identifier"] = 2070] = "decl_identifier";
1486
- NoneTerminal[NoneTerminal["initializer"] = 2071] = "initializer";
1487
- NoneTerminal[NoneTerminal["initializer_list"] = 2072] = "initializer_list";
1488
- NoneTerminal[NoneTerminal["declaration_statement"] = 2073] = "declaration_statement";
1489
- NoneTerminal[NoneTerminal["simple_statement"] = 2074] = "simple_statement";
1490
- NoneTerminal[NoneTerminal["compound_statement_no_scope"] = 2075] = "compound_statement_no_scope";
1491
- NoneTerminal[NoneTerminal["statement_with_scope"] = 2076] = "statement_with_scope";
1492
- NoneTerminal[NoneTerminal["compound_statement"] = 2077] = "compound_statement";
1493
- NoneTerminal[NoneTerminal["statement"] = 2078] = "statement";
1494
- NoneTerminal[NoneTerminal["statement_list"] = 2079] = "statement_list";
1495
- NoneTerminal[NoneTerminal["iteration_statement_no_new_scope"] = 2080] = "iteration_statement_no_new_scope";
1496
- NoneTerminal[NoneTerminal["expression_statement"] = 2081] = "expression_statement";
1497
- NoneTerminal[NoneTerminal["selection_statement"] = 2082] = "selection_statement";
1498
- NoneTerminal[NoneTerminal["selection_rest_statement"] = 2083] = "selection_rest_statement";
1499
- NoneTerminal[NoneTerminal["condition"] = 2084] = "condition";
1500
- NoneTerminal[NoneTerminal["conditionopt"] = 2085] = "conditionopt";
1501
- NoneTerminal[NoneTerminal["iteration_statement"] = 2086] = "iteration_statement";
1502
- NoneTerminal[NoneTerminal["for_init_statement"] = 2087] = "for_init_statement";
1503
- NoneTerminal[NoneTerminal["for_rest_statement"] = 2088] = "for_rest_statement";
1504
- NoneTerminal[NoneTerminal["jump_statement"] = 2089] = "jump_statement";
1505
- NoneTerminal[NoneTerminal["external_declaration"] = 2090] = "external_declaration";
1506
- NoneTerminal[NoneTerminal["function_definition"] = 2091] = "function_definition";
1507
- NoneTerminal[NoneTerminal["field_selection"] = 2092] = "field_selection";
1508
- NoneTerminal[NoneTerminal["bool_constant"] = 2093] = "bool_constant";
1509
- NoneTerminal[NoneTerminal["function_identifier_node"] = 2094] = "function_identifier_node";
1510
- NoneTerminal[NoneTerminal["typename_identifier_node"] = 2095] = "typename_identifier_node";
1511
- NoneTerminal[NoneTerminal["scope_brace"] = 2096] = "scope_brace";
1512
- NoneTerminal[NoneTerminal["scope_end_brace"] = 2097] = "scope_end_brace";
1513
- NoneTerminal[NoneTerminal["_ignore"] = 2098] = "_ignore";
1425
+ NoneTerminal[NoneTerminal["variable_declaration_list"] = 2004] = "variable_declaration_list";
1426
+ NoneTerminal[NoneTerminal["variable_declaration_statement"] = 2005] = "variable_declaration_statement";
1427
+ NoneTerminal[NoneTerminal["array_specifier_list"] = 2006] = "array_specifier_list";
1428
+ NoneTerminal[NoneTerminal["array_specifier"] = 2007] = "array_specifier";
1429
+ NoneTerminal[NoneTerminal["ext_builtin_type_specifier_nonarray"] = 2008] = "ext_builtin_type_specifier_nonarray";
1430
+ NoneTerminal[NoneTerminal["precision_specifier"] = 2009] = "precision_specifier";
1431
+ NoneTerminal[NoneTerminal["variable_identifier"] = 2010] = "variable_identifier";
1432
+ NoneTerminal[NoneTerminal["variable_identifier_node"] = 2011] = "variable_identifier_node";
1433
+ NoneTerminal[NoneTerminal["primary_expression"] = 2012] = "primary_expression";
1434
+ NoneTerminal[NoneTerminal["postfix_expression"] = 2013] = "postfix_expression";
1435
+ NoneTerminal[NoneTerminal["integer_expression"] = 2014] = "integer_expression";
1436
+ NoneTerminal[NoneTerminal["function_call"] = 2015] = "function_call";
1437
+ NoneTerminal[NoneTerminal["function_call_generic"] = 2016] = "function_call_generic";
1438
+ NoneTerminal[NoneTerminal["function_call_header_no_parameters"] = 2017] = "function_call_header_no_parameters";
1439
+ NoneTerminal[NoneTerminal["function_call_header_with_parameters"] = 2018] = "function_call_header_with_parameters";
1440
+ NoneTerminal[NoneTerminal["function_call_parameter_list"] = 2019] = "function_call_parameter_list";
1441
+ NoneTerminal[NoneTerminal["function_call_header"] = 2020] = "function_call_header";
1442
+ NoneTerminal[NoneTerminal["function_identifier"] = 2021] = "function_identifier";
1443
+ NoneTerminal[NoneTerminal["constructor_identifier"] = 2022] = "constructor_identifier";
1444
+ NoneTerminal[NoneTerminal["unary_expression"] = 2023] = "unary_expression";
1445
+ NoneTerminal[NoneTerminal["unary_operator"] = 2024] = "unary_operator";
1446
+ NoneTerminal[NoneTerminal["multiplicative_expression"] = 2025] = "multiplicative_expression";
1447
+ NoneTerminal[NoneTerminal["additive_expression"] = 2026] = "additive_expression";
1448
+ NoneTerminal[NoneTerminal["shift_expression"] = 2027] = "shift_expression";
1449
+ NoneTerminal[NoneTerminal["relational_expression"] = 2028] = "relational_expression";
1450
+ NoneTerminal[NoneTerminal["equality_expression"] = 2029] = "equality_expression";
1451
+ NoneTerminal[NoneTerminal["and_expression"] = 2030] = "and_expression";
1452
+ NoneTerminal[NoneTerminal["inclusive_or_expression"] = 2031] = "inclusive_or_expression";
1453
+ NoneTerminal[NoneTerminal["exclusive_or_expression"] = 2032] = "exclusive_or_expression";
1454
+ NoneTerminal[NoneTerminal["logical_and_expression"] = 2033] = "logical_and_expression";
1455
+ NoneTerminal[NoneTerminal["logical_xor_expression"] = 2034] = "logical_xor_expression";
1456
+ NoneTerminal[NoneTerminal["logical_or_expression"] = 2035] = "logical_or_expression";
1457
+ NoneTerminal[NoneTerminal["conditional_expression"] = 2036] = "conditional_expression";
1458
+ NoneTerminal[NoneTerminal["assignment_expression"] = 2037] = "assignment_expression";
1459
+ NoneTerminal[NoneTerminal["assignment_operator"] = 2038] = "assignment_operator";
1460
+ NoneTerminal[NoneTerminal["expression"] = 2039] = "expression";
1461
+ NoneTerminal[NoneTerminal["integer_constant_expression"] = 2040] = "integer_constant_expression";
1462
+ NoneTerminal[NoneTerminal["integer_constant_expression_operator"] = 2041] = "integer_constant_expression_operator";
1463
+ NoneTerminal[NoneTerminal["declaration"] = 2042] = "declaration";
1464
+ NoneTerminal[NoneTerminal["function_prototype"] = 2043] = "function_prototype";
1465
+ NoneTerminal[NoneTerminal["function_declarator"] = 2044] = "function_declarator";
1466
+ NoneTerminal[NoneTerminal["function_header_with_parameters"] = 2045] = "function_header_with_parameters";
1467
+ NoneTerminal[NoneTerminal["function_header"] = 2046] = "function_header";
1468
+ NoneTerminal[NoneTerminal["function_parameter_list"] = 2047] = "function_parameter_list";
1469
+ NoneTerminal[NoneTerminal["parameter_declarator"] = 2048] = "parameter_declarator";
1470
+ NoneTerminal[NoneTerminal["parameter_declaration"] = 2049] = "parameter_declaration";
1471
+ NoneTerminal[NoneTerminal["parameter_qualifier"] = 2050] = "parameter_qualifier";
1472
+ NoneTerminal[NoneTerminal["parameter_type_specifier"] = 2051] = "parameter_type_specifier";
1473
+ NoneTerminal[NoneTerminal["init_declarator_list"] = 2052] = "init_declarator_list";
1474
+ NoneTerminal[NoneTerminal["single_declaration"] = 2053] = "single_declaration";
1475
+ NoneTerminal[NoneTerminal["fully_specified_type"] = 2054] = "fully_specified_type";
1476
+ NoneTerminal[NoneTerminal["type_qualifier"] = 2055] = "type_qualifier";
1477
+ NoneTerminal[NoneTerminal["single_type_qualifier"] = 2056] = "single_type_qualifier";
1478
+ NoneTerminal[NoneTerminal["storage_qualifier"] = 2057] = "storage_qualifier";
1479
+ NoneTerminal[NoneTerminal["precision_qualifier"] = 2058] = "precision_qualifier";
1480
+ NoneTerminal[NoneTerminal["interpolation_qualifier"] = 2059] = "interpolation_qualifier";
1481
+ NoneTerminal[NoneTerminal["invariant_qualifier"] = 2060] = "invariant_qualifier";
1482
+ NoneTerminal[NoneTerminal["type_specifier"] = 2061] = "type_specifier";
1483
+ NoneTerminal[NoneTerminal["type_specifier_nonarray"] = 2062] = "type_specifier_nonarray";
1484
+ NoneTerminal[NoneTerminal["type_specifier_no_prec"] = 2063] = "type_specifier_no_prec";
1485
+ NoneTerminal[NoneTerminal["basic_type"] = 2064] = "basic_type";
1486
+ NoneTerminal[NoneTerminal["struct_specifier"] = 2065] = "struct_specifier";
1487
+ NoneTerminal[NoneTerminal["struct_declaration_list"] = 2066] = "struct_declaration_list";
1488
+ NoneTerminal[NoneTerminal["struct_declaration"] = 2067] = "struct_declaration";
1489
+ NoneTerminal[NoneTerminal["layout_qualifier"] = 2068] = "layout_qualifier";
1490
+ NoneTerminal[NoneTerminal["struct_declarator_list"] = 2069] = "struct_declarator_list";
1491
+ NoneTerminal[NoneTerminal["struct_declarator"] = 2070] = "struct_declarator";
1492
+ NoneTerminal[NoneTerminal["identifier_list"] = 2071] = "identifier_list";
1493
+ NoneTerminal[NoneTerminal["decl_identifier"] = 2072] = "decl_identifier";
1494
+ NoneTerminal[NoneTerminal["initializer"] = 2073] = "initializer";
1495
+ NoneTerminal[NoneTerminal["initializer_list"] = 2074] = "initializer_list";
1496
+ NoneTerminal[NoneTerminal["declaration_statement"] = 2075] = "declaration_statement";
1497
+ NoneTerminal[NoneTerminal["simple_statement"] = 2076] = "simple_statement";
1498
+ NoneTerminal[NoneTerminal["compound_statement_no_scope"] = 2077] = "compound_statement_no_scope";
1499
+ NoneTerminal[NoneTerminal["statement_with_scope"] = 2078] = "statement_with_scope";
1500
+ NoneTerminal[NoneTerminal["compound_statement"] = 2079] = "compound_statement";
1501
+ NoneTerminal[NoneTerminal["statement"] = 2080] = "statement";
1502
+ NoneTerminal[NoneTerminal["statement_list"] = 2081] = "statement_list";
1503
+ NoneTerminal[NoneTerminal["iteration_statement_no_new_scope"] = 2082] = "iteration_statement_no_new_scope";
1504
+ NoneTerminal[NoneTerminal["expression_statement"] = 2083] = "expression_statement";
1505
+ NoneTerminal[NoneTerminal["selection_statement"] = 2084] = "selection_statement";
1506
+ NoneTerminal[NoneTerminal["selection_rest_statement"] = 2085] = "selection_rest_statement";
1507
+ NoneTerminal[NoneTerminal["condition"] = 2086] = "condition";
1508
+ NoneTerminal[NoneTerminal["conditionopt"] = 2087] = "conditionopt";
1509
+ NoneTerminal[NoneTerminal["iteration_statement"] = 2088] = "iteration_statement";
1510
+ NoneTerminal[NoneTerminal["for_init_statement"] = 2089] = "for_init_statement";
1511
+ NoneTerminal[NoneTerminal["for_rest_statement"] = 2090] = "for_rest_statement";
1512
+ NoneTerminal[NoneTerminal["jump_statement"] = 2091] = "jump_statement";
1513
+ NoneTerminal[NoneTerminal["external_declaration"] = 2092] = "external_declaration";
1514
+ NoneTerminal[NoneTerminal["function_definition"] = 2093] = "function_definition";
1515
+ NoneTerminal[NoneTerminal["field_selection"] = 2094] = "field_selection";
1516
+ NoneTerminal[NoneTerminal["bool_constant"] = 2095] = "bool_constant";
1517
+ NoneTerminal[NoneTerminal["function_identifier_node"] = 2096] = "function_identifier_node";
1518
+ NoneTerminal[NoneTerminal["typename_identifier_node"] = 2097] = "typename_identifier_node";
1519
+ NoneTerminal[NoneTerminal["scope_brace"] = 2098] = "scope_brace";
1520
+ NoneTerminal[NoneTerminal["scope_end_brace"] = 2099] = "scope_end_brace";
1521
+ NoneTerminal[NoneTerminal["_ignore"] = 2100] = "_ignore";
1514
1522
  return NoneTerminal;
1515
1523
  }({});
1516
1524
 
@@ -1585,7 +1593,9 @@
1585
1593
  _proto.codeGen = function codeGen(visitor) {
1586
1594
  return visitor.defaultCodeGen(this.children);
1587
1595
  };
1588
- _proto.semanticAnalyze = function semanticAnalyze(sa) {};
1596
+ /**
1597
+ * Do semantic analyze right after the ast node is generated.
1598
+ */ _proto.semanticAnalyze = function semanticAnalyze(sa) {};
1589
1599
  _create_class(TreeNode, [
1590
1600
  {
1591
1601
  key: "children",
@@ -1716,19 +1726,23 @@
1716
1726
  this.arraySpecifier = undefined;
1717
1727
  };
1718
1728
  _proto.semanticAnalyze = function semanticAnalyze(sa) {
1719
- var fullyType = this.children[0];
1720
- var id = this.children[1];
1721
- this.typeSpecifier = fullyType.typeSpecifier;
1729
+ var children = this.children;
1730
+ var childrenLen = children.length;
1731
+ var fullyType = children[0];
1732
+ var typeSpecifier = fullyType.typeSpecifier;
1733
+ this.typeSpecifier = typeSpecifier;
1734
+ this.arraySpecifier = typeSpecifier.arraySpecifier;
1735
+ var id = children[1];
1722
1736
  var sm;
1723
- if (this.children.length === 2 || this.children.length === 4) {
1724
- var symbolType = new SymbolType(fullyType.type, fullyType.typeSpecifier.lexeme);
1725
- var initializer = this.children[3];
1737
+ if (childrenLen === 2 || childrenLen === 4) {
1738
+ var symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
1739
+ var initializer = children[3];
1726
1740
  sm = new VarSymbol(id.lexeme, symbolType, false, initializer);
1727
1741
  } else {
1728
- var arraySpecifier = this.children[2];
1742
+ var arraySpecifier = children[2];
1729
1743
  this.arraySpecifier = arraySpecifier;
1730
- var symbolType1 = new SymbolType(fullyType.type, fullyType.typeSpecifier.lexeme, arraySpecifier);
1731
- var initializer1 = this.children[4];
1744
+ var symbolType1 = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
1745
+ var initializer1 = children[4];
1732
1746
  sm = new VarSymbol(id.lexeme, symbolType1, false, initializer1);
1733
1747
  }
1734
1748
  sa.symbolTableStack.insert(sm);
@@ -1845,6 +1859,12 @@
1845
1859
  return (_this_children = this.children) == null ? void 0 : (_this_children_ = _this_children[1]) == null ? void 0 : _this_children_.size;
1846
1860
  }
1847
1861
  },
1862
+ {
1863
+ key: "arraySpecifier",
1864
+ get: function get() {
1865
+ return this.children[1];
1866
+ }
1867
+ },
1848
1868
  {
1849
1869
  key: "isCustom",
1850
1870
  get: function get() {
@@ -2857,14 +2877,15 @@
2857
2877
  }
2858
2878
  var _proto = VariableDeclaration.prototype;
2859
2879
  _proto.semanticAnalyze = function semanticAnalyze(sa) {
2860
- var type = this.children[0];
2861
- var ident = this.children[1];
2862
- var sm;
2863
- sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);
2880
+ var children = this.children;
2881
+ var type = children[0];
2882
+ var ident = children[1];
2883
+ this.type = type;
2884
+ var sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);
2864
2885
  sa.symbolTableStack.insert(sm);
2865
2886
  };
2866
2887
  _proto.codeGen = function codeGen(visitor) {
2867
- return visitor.visitGlobalVariableDeclaration(this);
2888
+ return visitor.visitGlobalVariableDeclaration(this) + ";";
2868
2889
  };
2869
2890
  return VariableDeclaration;
2870
2891
  }(TreeNode);
@@ -2872,6 +2893,45 @@
2872
2893
  VariableDeclaration = __decorate([
2873
2894
  ASTNodeDecorator(NoneTerminal.variable_declaration)
2874
2895
  ], VariableDeclaration);
2896
+ var VariableDeclarationList = /*#__PURE__*/ function(TreeNode) {
2897
+ _inherits(VariableDeclarationList, TreeNode);
2898
+ function VariableDeclarationList() {
2899
+ return TreeNode.apply(this, arguments) || this;
2900
+ }
2901
+ var _proto = VariableDeclarationList.prototype;
2902
+ _proto.semanticAnalyze = function semanticAnalyze(sa) {
2903
+ var children = this.children;
2904
+ var length = children.length;
2905
+ var variableDeclaration = children[0];
2906
+ var type = variableDeclaration.type;
2907
+ this.type = type;
2908
+ if (length === 1) {
2909
+ return;
2910
+ }
2911
+ var ident = children[2];
2912
+ var newVariable = VariableDeclaration.pool.get();
2913
+ if (length === 3) {
2914
+ // variable_declaration_list ',' id
2915
+ newVariable.set(ident.location, [
2916
+ type,
2917
+ ident
2918
+ ]);
2919
+ } else {
2920
+ // variable_declaration_list ',' id array_specifier
2921
+ newVariable.set(ident.location, [
2922
+ type,
2923
+ ident,
2924
+ children[3]
2925
+ ]);
2926
+ }
2927
+ newVariable.semanticAnalyze(sa);
2928
+ };
2929
+ return VariableDeclarationList;
2930
+ }(TreeNode);
2931
+ ASTNode.VariableDeclarationList = VariableDeclarationList;
2932
+ VariableDeclarationList = __decorate([
2933
+ ASTNodeDecorator(NoneTerminal.variable_declaration_list)
2934
+ ], VariableDeclarationList);
2875
2935
  var VariableIdentifier = /*#__PURE__*/ function(TreeNode) {
2876
2936
  _inherits(VariableIdentifier, TreeNode);
2877
2937
  function VariableIdentifier() {
@@ -2993,7 +3053,7 @@
2993
3053
  NoneTerminal.precision_specifier
2994
3054
  ],
2995
3055
  [
2996
- NoneTerminal.variable_declaration
3056
+ NoneTerminal.variable_declaration_statement
2997
3057
  ],
2998
3058
  [
2999
3059
  NoneTerminal.struct_specifier
@@ -3003,22 +3063,35 @@
3003
3063
  ]
3004
3064
  ]), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration, [
3005
3065
  [
3006
- EKeyword.GS_RenderQueueType,
3007
- ETokenType.ID,
3008
- ETokenType.SEMICOLON
3066
+ NoneTerminal.fully_specified_type,
3067
+ ETokenType.ID
3009
3068
  ],
3010
3069
  [
3011
3070
  NoneTerminal.fully_specified_type,
3012
3071
  ETokenType.ID,
3013
- ETokenType.SEMICOLON
3072
+ NoneTerminal.array_specifier
3073
+ ]
3074
+ ], ASTNode.VariableDeclaration.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_list, [
3075
+ [
3076
+ NoneTerminal.variable_declaration
3014
3077
  ],
3015
3078
  [
3016
- NoneTerminal.fully_specified_type,
3079
+ NoneTerminal.variable_declaration_list,
3080
+ ETokenType.COMMA,
3081
+ ETokenType.ID
3082
+ ],
3083
+ [
3084
+ NoneTerminal.variable_declaration_list,
3085
+ ETokenType.COMMA,
3017
3086
  ETokenType.ID,
3018
- NoneTerminal.array_specifier,
3087
+ NoneTerminal.array_specifier
3088
+ ]
3089
+ ], ASTNode.VariableDeclarationList.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [
3090
+ [
3091
+ NoneTerminal.variable_declaration_list,
3019
3092
  ETokenType.SEMICOLON
3020
3093
  ]
3021
- ], ASTNode.VariableDeclaration.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.ext_builtin_type_specifier_nonarray, [
3094
+ ]), GrammarUtils.createProductionWithOptions(NoneTerminal.ext_builtin_type_specifier_nonarray, [
3022
3095
  [
3023
3096
  EKeyword.VOID
3024
3097
  ],
@@ -5184,7 +5257,7 @@
5184
5257
  return !!this._definedMacros.get(macro.lexeme);
5185
5258
  } else {
5186
5259
  var macro1 = this._definedMacros.get(id.lexeme);
5187
- if (!macro1) {
5260
+ if (!macro1 || !macro1.body) {
5188
5261
  return false;
5189
5262
  }
5190
5263
  if (macro1.isFunction) {
@@ -6729,7 +6802,7 @@
6729
6802
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
6730
6803
 
6731
6804
  //@ts-ignore
6732
- var version = "1.4.0-alpha.3";
6805
+ var version = "1.4.0-beta.1";
6733
6806
  var mode = "Release";
6734
6807
  console.log("Galacean ShaderLab version: " + version + ". mode: " + mode);
6735
6808