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

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/module.js CHANGED
@@ -540,7 +540,7 @@ var ETokenType = /*#__PURE__*/ function(ETokenType) {
540
540
  /** , */ ETokenType[ETokenType["COMMA"] = 1032] = "COMMA";
541
541
  ETokenType[ETokenType["COLON"] = 1033] = "COLON";
542
542
  /** = */ ETokenType[ETokenType["EQUAL"] = 1034] = "EQUAL";
543
- ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
543
+ /** ; */ ETokenType[ETokenType["SEMICOLON"] = 1035] = "SEMICOLON";
544
544
  /** ! */ ETokenType[ETokenType["BANG"] = 1036] = "BANG";
545
545
  /** \- */ ETokenType[ETokenType["DASH"] = 1037] = "DASH";
546
546
  /** ~ */ ETokenType[ETokenType["TILDE"] = 1038] = "TILDE";
@@ -637,7 +637,8 @@ var LexerUtils = /*#__PURE__*/ function() {
637
637
  };
638
638
  LexerUtils.isSpace = function isSpace(charCode) {
639
639
  return charCode === 9 || // Tab
640
- charCode === 10 || // Line break
640
+ charCode === 10 || // Line break - /n
641
+ charCode === 13 || // Carriage return -/r
641
642
  charCode === 32 // Space
642
643
  ;
643
644
  };
@@ -710,7 +711,11 @@ var BaseScanner = /*#__PURE__*/ function() {
710
711
  var start = this.getCurPosition();
711
712
  this.advance(2);
712
713
  // single line comments
713
- while(this.getCurChar() !== "\n")this._advance();
714
+ var curChar = this.getCurChar();
715
+ while(curChar !== "\n" && curChar !== "\r" && !this.isEnd()){
716
+ this._advance();
717
+ curChar = this.getCurChar();
718
+ }
714
719
  this.skipCommentsAndSpace();
715
720
  return ShaderLab.createRange(start, this.getCurPosition());
716
721
  } else if (this.peek(2) === "/*") {
@@ -820,7 +825,8 @@ var BaseScanner = /*#__PURE__*/ function() {
820
825
  BaseScanner._spaceCharsWithBreak = [
821
826
  " ",
822
827
  "\t",
823
- "\n"
828
+ "\n",
829
+ "\r"
824
830
  ];
825
831
  BaseScanner._spaceChars = [
826
832
  " ",
@@ -1412,101 +1418,103 @@ var NoneTerminal = /*#__PURE__*/ function(NoneTerminal) {
1412
1418
  // glsl
1413
1419
  NoneTerminal[NoneTerminal["global_declaration"] = 2002] = "global_declaration";
1414
1420
  NoneTerminal[NoneTerminal["variable_declaration"] = 2003] = "variable_declaration";
1415
- NoneTerminal[NoneTerminal["array_specifier_list"] = 2004] = "array_specifier_list";
1416
- NoneTerminal[NoneTerminal["array_specifier"] = 2005] = "array_specifier";
1417
- NoneTerminal[NoneTerminal["ext_builtin_type_specifier_nonarray"] = 2006] = "ext_builtin_type_specifier_nonarray";
1418
- NoneTerminal[NoneTerminal["precision_specifier"] = 2007] = "precision_specifier";
1419
- NoneTerminal[NoneTerminal["variable_identifier"] = 2008] = "variable_identifier";
1420
- NoneTerminal[NoneTerminal["variable_identifier_node"] = 2009] = "variable_identifier_node";
1421
- NoneTerminal[NoneTerminal["primary_expression"] = 2010] = "primary_expression";
1422
- NoneTerminal[NoneTerminal["postfix_expression"] = 2011] = "postfix_expression";
1423
- NoneTerminal[NoneTerminal["integer_expression"] = 2012] = "integer_expression";
1424
- NoneTerminal[NoneTerminal["function_call"] = 2013] = "function_call";
1425
- NoneTerminal[NoneTerminal["function_call_generic"] = 2014] = "function_call_generic";
1426
- NoneTerminal[NoneTerminal["function_call_header_no_parameters"] = 2015] = "function_call_header_no_parameters";
1427
- NoneTerminal[NoneTerminal["function_call_header_with_parameters"] = 2016] = "function_call_header_with_parameters";
1428
- NoneTerminal[NoneTerminal["function_call_parameter_list"] = 2017] = "function_call_parameter_list";
1429
- NoneTerminal[NoneTerminal["function_call_header"] = 2018] = "function_call_header";
1430
- NoneTerminal[NoneTerminal["function_identifier"] = 2019] = "function_identifier";
1431
- NoneTerminal[NoneTerminal["constructor_identifier"] = 2020] = "constructor_identifier";
1432
- NoneTerminal[NoneTerminal["unary_expression"] = 2021] = "unary_expression";
1433
- NoneTerminal[NoneTerminal["unary_operator"] = 2022] = "unary_operator";
1434
- NoneTerminal[NoneTerminal["multiplicative_expression"] = 2023] = "multiplicative_expression";
1435
- NoneTerminal[NoneTerminal["additive_expression"] = 2024] = "additive_expression";
1436
- NoneTerminal[NoneTerminal["shift_expression"] = 2025] = "shift_expression";
1437
- NoneTerminal[NoneTerminal["relational_expression"] = 2026] = "relational_expression";
1438
- NoneTerminal[NoneTerminal["equality_expression"] = 2027] = "equality_expression";
1439
- NoneTerminal[NoneTerminal["and_expression"] = 2028] = "and_expression";
1440
- NoneTerminal[NoneTerminal["inclusive_or_expression"] = 2029] = "inclusive_or_expression";
1441
- NoneTerminal[NoneTerminal["exclusive_or_expression"] = 2030] = "exclusive_or_expression";
1442
- NoneTerminal[NoneTerminal["logical_and_expression"] = 2031] = "logical_and_expression";
1443
- NoneTerminal[NoneTerminal["logical_xor_expression"] = 2032] = "logical_xor_expression";
1444
- NoneTerminal[NoneTerminal["logical_or_expression"] = 2033] = "logical_or_expression";
1445
- NoneTerminal[NoneTerminal["conditional_expression"] = 2034] = "conditional_expression";
1446
- NoneTerminal[NoneTerminal["assignment_expression"] = 2035] = "assignment_expression";
1447
- NoneTerminal[NoneTerminal["assignment_operator"] = 2036] = "assignment_operator";
1448
- NoneTerminal[NoneTerminal["expression"] = 2037] = "expression";
1449
- NoneTerminal[NoneTerminal["integer_constant_expression"] = 2038] = "integer_constant_expression";
1450
- NoneTerminal[NoneTerminal["integer_constant_expression_operator"] = 2039] = "integer_constant_expression_operator";
1451
- NoneTerminal[NoneTerminal["declaration"] = 2040] = "declaration";
1452
- NoneTerminal[NoneTerminal["function_prototype"] = 2041] = "function_prototype";
1453
- NoneTerminal[NoneTerminal["function_declarator"] = 2042] = "function_declarator";
1454
- NoneTerminal[NoneTerminal["function_header_with_parameters"] = 2043] = "function_header_with_parameters";
1455
- NoneTerminal[NoneTerminal["function_header"] = 2044] = "function_header";
1456
- NoneTerminal[NoneTerminal["function_parameter_list"] = 2045] = "function_parameter_list";
1457
- NoneTerminal[NoneTerminal["parameter_declarator"] = 2046] = "parameter_declarator";
1458
- NoneTerminal[NoneTerminal["parameter_declaration"] = 2047] = "parameter_declaration";
1459
- NoneTerminal[NoneTerminal["parameter_qualifier"] = 2048] = "parameter_qualifier";
1460
- NoneTerminal[NoneTerminal["parameter_type_specifier"] = 2049] = "parameter_type_specifier";
1461
- NoneTerminal[NoneTerminal["init_declarator_list"] = 2050] = "init_declarator_list";
1462
- NoneTerminal[NoneTerminal["single_declaration"] = 2051] = "single_declaration";
1463
- NoneTerminal[NoneTerminal["fully_specified_type"] = 2052] = "fully_specified_type";
1464
- NoneTerminal[NoneTerminal["type_qualifier"] = 2053] = "type_qualifier";
1465
- NoneTerminal[NoneTerminal["single_type_qualifier"] = 2054] = "single_type_qualifier";
1466
- NoneTerminal[NoneTerminal["storage_qualifier"] = 2055] = "storage_qualifier";
1467
- NoneTerminal[NoneTerminal["precision_qualifier"] = 2056] = "precision_qualifier";
1468
- NoneTerminal[NoneTerminal["interpolation_qualifier"] = 2057] = "interpolation_qualifier";
1469
- NoneTerminal[NoneTerminal["invariant_qualifier"] = 2058] = "invariant_qualifier";
1470
- NoneTerminal[NoneTerminal["type_specifier"] = 2059] = "type_specifier";
1471
- NoneTerminal[NoneTerminal["type_specifier_nonarray"] = 2060] = "type_specifier_nonarray";
1472
- NoneTerminal[NoneTerminal["type_specifier_no_prec"] = 2061] = "type_specifier_no_prec";
1473
- NoneTerminal[NoneTerminal["basic_type"] = 2062] = "basic_type";
1474
- NoneTerminal[NoneTerminal["struct_specifier"] = 2063] = "struct_specifier";
1475
- NoneTerminal[NoneTerminal["struct_declaration_list"] = 2064] = "struct_declaration_list";
1476
- NoneTerminal[NoneTerminal["struct_declaration"] = 2065] = "struct_declaration";
1477
- NoneTerminal[NoneTerminal["layout_qualifier"] = 2066] = "layout_qualifier";
1478
- NoneTerminal[NoneTerminal["struct_declarator_list"] = 2067] = "struct_declarator_list";
1479
- NoneTerminal[NoneTerminal["struct_declarator"] = 2068] = "struct_declarator";
1480
- NoneTerminal[NoneTerminal["identifier_list"] = 2069] = "identifier_list";
1481
- NoneTerminal[NoneTerminal["decl_identifier"] = 2070] = "decl_identifier";
1482
- NoneTerminal[NoneTerminal["initializer"] = 2071] = "initializer";
1483
- NoneTerminal[NoneTerminal["initializer_list"] = 2072] = "initializer_list";
1484
- NoneTerminal[NoneTerminal["declaration_statement"] = 2073] = "declaration_statement";
1485
- NoneTerminal[NoneTerminal["simple_statement"] = 2074] = "simple_statement";
1486
- NoneTerminal[NoneTerminal["compound_statement_no_scope"] = 2075] = "compound_statement_no_scope";
1487
- NoneTerminal[NoneTerminal["statement_with_scope"] = 2076] = "statement_with_scope";
1488
- NoneTerminal[NoneTerminal["compound_statement"] = 2077] = "compound_statement";
1489
- NoneTerminal[NoneTerminal["statement"] = 2078] = "statement";
1490
- NoneTerminal[NoneTerminal["statement_list"] = 2079] = "statement_list";
1491
- NoneTerminal[NoneTerminal["iteration_statement_no_new_scope"] = 2080] = "iteration_statement_no_new_scope";
1492
- NoneTerminal[NoneTerminal["expression_statement"] = 2081] = "expression_statement";
1493
- NoneTerminal[NoneTerminal["selection_statement"] = 2082] = "selection_statement";
1494
- NoneTerminal[NoneTerminal["selection_rest_statement"] = 2083] = "selection_rest_statement";
1495
- NoneTerminal[NoneTerminal["condition"] = 2084] = "condition";
1496
- NoneTerminal[NoneTerminal["conditionopt"] = 2085] = "conditionopt";
1497
- NoneTerminal[NoneTerminal["iteration_statement"] = 2086] = "iteration_statement";
1498
- NoneTerminal[NoneTerminal["for_init_statement"] = 2087] = "for_init_statement";
1499
- NoneTerminal[NoneTerminal["for_rest_statement"] = 2088] = "for_rest_statement";
1500
- NoneTerminal[NoneTerminal["jump_statement"] = 2089] = "jump_statement";
1501
- NoneTerminal[NoneTerminal["external_declaration"] = 2090] = "external_declaration";
1502
- NoneTerminal[NoneTerminal["function_definition"] = 2091] = "function_definition";
1503
- NoneTerminal[NoneTerminal["field_selection"] = 2092] = "field_selection";
1504
- NoneTerminal[NoneTerminal["bool_constant"] = 2093] = "bool_constant";
1505
- NoneTerminal[NoneTerminal["function_identifier_node"] = 2094] = "function_identifier_node";
1506
- NoneTerminal[NoneTerminal["typename_identifier_node"] = 2095] = "typename_identifier_node";
1507
- NoneTerminal[NoneTerminal["scope_brace"] = 2096] = "scope_brace";
1508
- NoneTerminal[NoneTerminal["scope_end_brace"] = 2097] = "scope_end_brace";
1509
- NoneTerminal[NoneTerminal["_ignore"] = 2098] = "_ignore";
1421
+ NoneTerminal[NoneTerminal["variable_declaration_list"] = 2004] = "variable_declaration_list";
1422
+ NoneTerminal[NoneTerminal["variable_declaration_statement"] = 2005] = "variable_declaration_statement";
1423
+ NoneTerminal[NoneTerminal["array_specifier_list"] = 2006] = "array_specifier_list";
1424
+ NoneTerminal[NoneTerminal["array_specifier"] = 2007] = "array_specifier";
1425
+ NoneTerminal[NoneTerminal["ext_builtin_type_specifier_nonarray"] = 2008] = "ext_builtin_type_specifier_nonarray";
1426
+ NoneTerminal[NoneTerminal["precision_specifier"] = 2009] = "precision_specifier";
1427
+ NoneTerminal[NoneTerminal["variable_identifier"] = 2010] = "variable_identifier";
1428
+ NoneTerminal[NoneTerminal["variable_identifier_node"] = 2011] = "variable_identifier_node";
1429
+ NoneTerminal[NoneTerminal["primary_expression"] = 2012] = "primary_expression";
1430
+ NoneTerminal[NoneTerminal["postfix_expression"] = 2013] = "postfix_expression";
1431
+ NoneTerminal[NoneTerminal["integer_expression"] = 2014] = "integer_expression";
1432
+ NoneTerminal[NoneTerminal["function_call"] = 2015] = "function_call";
1433
+ NoneTerminal[NoneTerminal["function_call_generic"] = 2016] = "function_call_generic";
1434
+ NoneTerminal[NoneTerminal["function_call_header_no_parameters"] = 2017] = "function_call_header_no_parameters";
1435
+ NoneTerminal[NoneTerminal["function_call_header_with_parameters"] = 2018] = "function_call_header_with_parameters";
1436
+ NoneTerminal[NoneTerminal["function_call_parameter_list"] = 2019] = "function_call_parameter_list";
1437
+ NoneTerminal[NoneTerminal["function_call_header"] = 2020] = "function_call_header";
1438
+ NoneTerminal[NoneTerminal["function_identifier"] = 2021] = "function_identifier";
1439
+ NoneTerminal[NoneTerminal["constructor_identifier"] = 2022] = "constructor_identifier";
1440
+ NoneTerminal[NoneTerminal["unary_expression"] = 2023] = "unary_expression";
1441
+ NoneTerminal[NoneTerminal["unary_operator"] = 2024] = "unary_operator";
1442
+ NoneTerminal[NoneTerminal["multiplicative_expression"] = 2025] = "multiplicative_expression";
1443
+ NoneTerminal[NoneTerminal["additive_expression"] = 2026] = "additive_expression";
1444
+ NoneTerminal[NoneTerminal["shift_expression"] = 2027] = "shift_expression";
1445
+ NoneTerminal[NoneTerminal["relational_expression"] = 2028] = "relational_expression";
1446
+ NoneTerminal[NoneTerminal["equality_expression"] = 2029] = "equality_expression";
1447
+ NoneTerminal[NoneTerminal["and_expression"] = 2030] = "and_expression";
1448
+ NoneTerminal[NoneTerminal["inclusive_or_expression"] = 2031] = "inclusive_or_expression";
1449
+ NoneTerminal[NoneTerminal["exclusive_or_expression"] = 2032] = "exclusive_or_expression";
1450
+ NoneTerminal[NoneTerminal["logical_and_expression"] = 2033] = "logical_and_expression";
1451
+ NoneTerminal[NoneTerminal["logical_xor_expression"] = 2034] = "logical_xor_expression";
1452
+ NoneTerminal[NoneTerminal["logical_or_expression"] = 2035] = "logical_or_expression";
1453
+ NoneTerminal[NoneTerminal["conditional_expression"] = 2036] = "conditional_expression";
1454
+ NoneTerminal[NoneTerminal["assignment_expression"] = 2037] = "assignment_expression";
1455
+ NoneTerminal[NoneTerminal["assignment_operator"] = 2038] = "assignment_operator";
1456
+ NoneTerminal[NoneTerminal["expression"] = 2039] = "expression";
1457
+ NoneTerminal[NoneTerminal["integer_constant_expression"] = 2040] = "integer_constant_expression";
1458
+ NoneTerminal[NoneTerminal["integer_constant_expression_operator"] = 2041] = "integer_constant_expression_operator";
1459
+ NoneTerminal[NoneTerminal["declaration"] = 2042] = "declaration";
1460
+ NoneTerminal[NoneTerminal["function_prototype"] = 2043] = "function_prototype";
1461
+ NoneTerminal[NoneTerminal["function_declarator"] = 2044] = "function_declarator";
1462
+ NoneTerminal[NoneTerminal["function_header_with_parameters"] = 2045] = "function_header_with_parameters";
1463
+ NoneTerminal[NoneTerminal["function_header"] = 2046] = "function_header";
1464
+ NoneTerminal[NoneTerminal["function_parameter_list"] = 2047] = "function_parameter_list";
1465
+ NoneTerminal[NoneTerminal["parameter_declarator"] = 2048] = "parameter_declarator";
1466
+ NoneTerminal[NoneTerminal["parameter_declaration"] = 2049] = "parameter_declaration";
1467
+ NoneTerminal[NoneTerminal["parameter_qualifier"] = 2050] = "parameter_qualifier";
1468
+ NoneTerminal[NoneTerminal["parameter_type_specifier"] = 2051] = "parameter_type_specifier";
1469
+ NoneTerminal[NoneTerminal["init_declarator_list"] = 2052] = "init_declarator_list";
1470
+ NoneTerminal[NoneTerminal["single_declaration"] = 2053] = "single_declaration";
1471
+ NoneTerminal[NoneTerminal["fully_specified_type"] = 2054] = "fully_specified_type";
1472
+ NoneTerminal[NoneTerminal["type_qualifier"] = 2055] = "type_qualifier";
1473
+ NoneTerminal[NoneTerminal["single_type_qualifier"] = 2056] = "single_type_qualifier";
1474
+ NoneTerminal[NoneTerminal["storage_qualifier"] = 2057] = "storage_qualifier";
1475
+ NoneTerminal[NoneTerminal["precision_qualifier"] = 2058] = "precision_qualifier";
1476
+ NoneTerminal[NoneTerminal["interpolation_qualifier"] = 2059] = "interpolation_qualifier";
1477
+ NoneTerminal[NoneTerminal["invariant_qualifier"] = 2060] = "invariant_qualifier";
1478
+ NoneTerminal[NoneTerminal["type_specifier"] = 2061] = "type_specifier";
1479
+ NoneTerminal[NoneTerminal["type_specifier_nonarray"] = 2062] = "type_specifier_nonarray";
1480
+ NoneTerminal[NoneTerminal["type_specifier_no_prec"] = 2063] = "type_specifier_no_prec";
1481
+ NoneTerminal[NoneTerminal["basic_type"] = 2064] = "basic_type";
1482
+ NoneTerminal[NoneTerminal["struct_specifier"] = 2065] = "struct_specifier";
1483
+ NoneTerminal[NoneTerminal["struct_declaration_list"] = 2066] = "struct_declaration_list";
1484
+ NoneTerminal[NoneTerminal["struct_declaration"] = 2067] = "struct_declaration";
1485
+ NoneTerminal[NoneTerminal["layout_qualifier"] = 2068] = "layout_qualifier";
1486
+ NoneTerminal[NoneTerminal["struct_declarator_list"] = 2069] = "struct_declarator_list";
1487
+ NoneTerminal[NoneTerminal["struct_declarator"] = 2070] = "struct_declarator";
1488
+ NoneTerminal[NoneTerminal["identifier_list"] = 2071] = "identifier_list";
1489
+ NoneTerminal[NoneTerminal["decl_identifier"] = 2072] = "decl_identifier";
1490
+ NoneTerminal[NoneTerminal["initializer"] = 2073] = "initializer";
1491
+ NoneTerminal[NoneTerminal["initializer_list"] = 2074] = "initializer_list";
1492
+ NoneTerminal[NoneTerminal["declaration_statement"] = 2075] = "declaration_statement";
1493
+ NoneTerminal[NoneTerminal["simple_statement"] = 2076] = "simple_statement";
1494
+ NoneTerminal[NoneTerminal["compound_statement_no_scope"] = 2077] = "compound_statement_no_scope";
1495
+ NoneTerminal[NoneTerminal["statement_with_scope"] = 2078] = "statement_with_scope";
1496
+ NoneTerminal[NoneTerminal["compound_statement"] = 2079] = "compound_statement";
1497
+ NoneTerminal[NoneTerminal["statement"] = 2080] = "statement";
1498
+ NoneTerminal[NoneTerminal["statement_list"] = 2081] = "statement_list";
1499
+ NoneTerminal[NoneTerminal["iteration_statement_no_new_scope"] = 2082] = "iteration_statement_no_new_scope";
1500
+ NoneTerminal[NoneTerminal["expression_statement"] = 2083] = "expression_statement";
1501
+ NoneTerminal[NoneTerminal["selection_statement"] = 2084] = "selection_statement";
1502
+ NoneTerminal[NoneTerminal["selection_rest_statement"] = 2085] = "selection_rest_statement";
1503
+ NoneTerminal[NoneTerminal["condition"] = 2086] = "condition";
1504
+ NoneTerminal[NoneTerminal["conditionopt"] = 2087] = "conditionopt";
1505
+ NoneTerminal[NoneTerminal["iteration_statement"] = 2088] = "iteration_statement";
1506
+ NoneTerminal[NoneTerminal["for_init_statement"] = 2089] = "for_init_statement";
1507
+ NoneTerminal[NoneTerminal["for_rest_statement"] = 2090] = "for_rest_statement";
1508
+ NoneTerminal[NoneTerminal["jump_statement"] = 2091] = "jump_statement";
1509
+ NoneTerminal[NoneTerminal["external_declaration"] = 2092] = "external_declaration";
1510
+ NoneTerminal[NoneTerminal["function_definition"] = 2093] = "function_definition";
1511
+ NoneTerminal[NoneTerminal["field_selection"] = 2094] = "field_selection";
1512
+ NoneTerminal[NoneTerminal["bool_constant"] = 2095] = "bool_constant";
1513
+ NoneTerminal[NoneTerminal["function_identifier_node"] = 2096] = "function_identifier_node";
1514
+ NoneTerminal[NoneTerminal["typename_identifier_node"] = 2097] = "typename_identifier_node";
1515
+ NoneTerminal[NoneTerminal["scope_brace"] = 2098] = "scope_brace";
1516
+ NoneTerminal[NoneTerminal["scope_end_brace"] = 2099] = "scope_end_brace";
1517
+ NoneTerminal[NoneTerminal["_ignore"] = 2100] = "_ignore";
1510
1518
  return NoneTerminal;
1511
1519
  }({});
1512
1520
 
@@ -1581,7 +1589,9 @@ var TreeNode = /*#__PURE__*/ function() {
1581
1589
  _proto.codeGen = function codeGen(visitor) {
1582
1590
  return visitor.defaultCodeGen(this.children);
1583
1591
  };
1584
- _proto.semanticAnalyze = function semanticAnalyze(sa) {};
1592
+ /**
1593
+ * Do semantic analyze right after the ast node is generated.
1594
+ */ _proto.semanticAnalyze = function semanticAnalyze(sa) {};
1585
1595
  _create_class(TreeNode, [
1586
1596
  {
1587
1597
  key: "children",
@@ -1712,19 +1722,23 @@ var TreeNode = /*#__PURE__*/ function() {
1712
1722
  this.arraySpecifier = undefined;
1713
1723
  };
1714
1724
  _proto.semanticAnalyze = function semanticAnalyze(sa) {
1715
- var fullyType = this.children[0];
1716
- var id = this.children[1];
1717
- this.typeSpecifier = fullyType.typeSpecifier;
1725
+ var children = this.children;
1726
+ var childrenLen = children.length;
1727
+ var fullyType = children[0];
1728
+ var typeSpecifier = fullyType.typeSpecifier;
1729
+ this.typeSpecifier = typeSpecifier;
1730
+ this.arraySpecifier = typeSpecifier.arraySpecifier;
1731
+ var id = children[1];
1718
1732
  var sm;
1719
- if (this.children.length === 2 || this.children.length === 4) {
1720
- var symbolType = new SymbolType(fullyType.type, fullyType.typeSpecifier.lexeme);
1721
- var initializer = this.children[3];
1733
+ if (childrenLen === 2 || childrenLen === 4) {
1734
+ var symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
1735
+ var initializer = children[3];
1722
1736
  sm = new VarSymbol(id.lexeme, symbolType, false, initializer);
1723
1737
  } else {
1724
- var arraySpecifier = this.children[2];
1738
+ var arraySpecifier = children[2];
1725
1739
  this.arraySpecifier = arraySpecifier;
1726
- var symbolType1 = new SymbolType(fullyType.type, fullyType.typeSpecifier.lexeme, arraySpecifier);
1727
- var initializer1 = this.children[4];
1740
+ var symbolType1 = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);
1741
+ var initializer1 = children[4];
1728
1742
  sm = new VarSymbol(id.lexeme, symbolType1, false, initializer1);
1729
1743
  }
1730
1744
  sa.symbolTableStack.insert(sm);
@@ -1841,6 +1855,12 @@ var TreeNode = /*#__PURE__*/ function() {
1841
1855
  return (_this_children = this.children) == null ? void 0 : (_this_children_ = _this_children[1]) == null ? void 0 : _this_children_.size;
1842
1856
  }
1843
1857
  },
1858
+ {
1859
+ key: "arraySpecifier",
1860
+ get: function get() {
1861
+ return this.children[1];
1862
+ }
1863
+ },
1844
1864
  {
1845
1865
  key: "isCustom",
1846
1866
  get: function get() {
@@ -2853,14 +2873,15 @@ var TreeNode = /*#__PURE__*/ function() {
2853
2873
  }
2854
2874
  var _proto = VariableDeclaration.prototype;
2855
2875
  _proto.semanticAnalyze = function semanticAnalyze(sa) {
2856
- var type = this.children[0];
2857
- var ident = this.children[1];
2858
- var sm;
2859
- sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);
2876
+ var children = this.children;
2877
+ var type = children[0];
2878
+ var ident = children[1];
2879
+ this.type = type;
2880
+ var sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);
2860
2881
  sa.symbolTableStack.insert(sm);
2861
2882
  };
2862
2883
  _proto.codeGen = function codeGen(visitor) {
2863
- return visitor.visitGlobalVariableDeclaration(this);
2884
+ return visitor.visitGlobalVariableDeclaration(this) + ";";
2864
2885
  };
2865
2886
  return VariableDeclaration;
2866
2887
  }(TreeNode);
@@ -2868,6 +2889,45 @@ var TreeNode = /*#__PURE__*/ function() {
2868
2889
  VariableDeclaration = __decorate([
2869
2890
  ASTNodeDecorator(NoneTerminal.variable_declaration)
2870
2891
  ], VariableDeclaration);
2892
+ var VariableDeclarationList = /*#__PURE__*/ function(TreeNode) {
2893
+ _inherits(VariableDeclarationList, TreeNode);
2894
+ function VariableDeclarationList() {
2895
+ return TreeNode.apply(this, arguments) || this;
2896
+ }
2897
+ var _proto = VariableDeclarationList.prototype;
2898
+ _proto.semanticAnalyze = function semanticAnalyze(sa) {
2899
+ var children = this.children;
2900
+ var length = children.length;
2901
+ var variableDeclaration = children[0];
2902
+ var type = variableDeclaration.type;
2903
+ this.type = type;
2904
+ if (length === 1) {
2905
+ return;
2906
+ }
2907
+ var ident = children[2];
2908
+ var newVariable = VariableDeclaration.pool.get();
2909
+ if (length === 3) {
2910
+ // variable_declaration_list ',' id
2911
+ newVariable.set(ident.location, [
2912
+ type,
2913
+ ident
2914
+ ]);
2915
+ } else {
2916
+ // variable_declaration_list ',' id array_specifier
2917
+ newVariable.set(ident.location, [
2918
+ type,
2919
+ ident,
2920
+ children[3]
2921
+ ]);
2922
+ }
2923
+ newVariable.semanticAnalyze(sa);
2924
+ };
2925
+ return VariableDeclarationList;
2926
+ }(TreeNode);
2927
+ ASTNode.VariableDeclarationList = VariableDeclarationList;
2928
+ VariableDeclarationList = __decorate([
2929
+ ASTNodeDecorator(NoneTerminal.variable_declaration_list)
2930
+ ], VariableDeclarationList);
2871
2931
  var VariableIdentifier = /*#__PURE__*/ function(TreeNode) {
2872
2932
  _inherits(VariableIdentifier, TreeNode);
2873
2933
  function VariableIdentifier() {
@@ -2989,7 +3049,7 @@ var productionAndRules = [].concat(GrammarUtils.createProductionWithOptions(None
2989
3049
  NoneTerminal.precision_specifier
2990
3050
  ],
2991
3051
  [
2992
- NoneTerminal.variable_declaration
3052
+ NoneTerminal.variable_declaration_statement
2993
3053
  ],
2994
3054
  [
2995
3055
  NoneTerminal.struct_specifier
@@ -2999,22 +3059,35 @@ var productionAndRules = [].concat(GrammarUtils.createProductionWithOptions(None
2999
3059
  ]
3000
3060
  ]), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration, [
3001
3061
  [
3002
- EKeyword.GS_RenderQueueType,
3003
- ETokenType.ID,
3004
- ETokenType.SEMICOLON
3062
+ NoneTerminal.fully_specified_type,
3063
+ ETokenType.ID
3005
3064
  ],
3006
3065
  [
3007
3066
  NoneTerminal.fully_specified_type,
3008
3067
  ETokenType.ID,
3009
- ETokenType.SEMICOLON
3068
+ NoneTerminal.array_specifier
3069
+ ]
3070
+ ], ASTNode.VariableDeclaration.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_list, [
3071
+ [
3072
+ NoneTerminal.variable_declaration
3010
3073
  ],
3011
3074
  [
3012
- NoneTerminal.fully_specified_type,
3075
+ NoneTerminal.variable_declaration_list,
3076
+ ETokenType.COMMA,
3077
+ ETokenType.ID
3078
+ ],
3079
+ [
3080
+ NoneTerminal.variable_declaration_list,
3081
+ ETokenType.COMMA,
3013
3082
  ETokenType.ID,
3014
- NoneTerminal.array_specifier,
3083
+ NoneTerminal.array_specifier
3084
+ ]
3085
+ ], ASTNode.VariableDeclarationList.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [
3086
+ [
3087
+ NoneTerminal.variable_declaration_list,
3015
3088
  ETokenType.SEMICOLON
3016
3089
  ]
3017
- ], ASTNode.VariableDeclaration.pool), GrammarUtils.createProductionWithOptions(NoneTerminal.ext_builtin_type_specifier_nonarray, [
3090
+ ]), GrammarUtils.createProductionWithOptions(NoneTerminal.ext_builtin_type_specifier_nonarray, [
3018
3091
  [
3019
3092
  EKeyword.VOID
3020
3093
  ],
@@ -5180,7 +5253,7 @@ var PpScanner = /*#__PURE__*/ function(BaseScanner) {
5180
5253
  return !!this._definedMacros.get(macro.lexeme);
5181
5254
  } else {
5182
5255
  var macro1 = this._definedMacros.get(id.lexeme);
5183
- if (!macro1) {
5256
+ if (!macro1 || !macro1.body) {
5184
5257
  return false;
5185
5258
  }
5186
5259
  if (macro1.isFunction) {
@@ -6725,7 +6798,7 @@ ShaderLab._shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);
6725
6798
  ShaderLab._shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);
6726
6799
 
6727
6800
  //@ts-ignore
6728
- var version = "1.4.0-alpha.3";
6801
+ var version = "1.4.0-beta.0";
6729
6802
  var mode = "Release";
6730
6803
  console.log("Galacean ShaderLab version: " + version + ". mode: " + mode);
6731
6804