pub const NODE_TYPES: &str = "[\n  {\n    \"type\": \"RECIPEPREFIX_assignment\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \".RECIPEPREFIX\",\n            \"named\": false\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"+=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"::=\",\n            \"named\": false\n          },\n          {\n            \"type\": \":=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"?=\",\n            \"named\": false\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"text\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"VPATH_assignment\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"VPATH\",\n            \"named\": false\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"+=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"::=\",\n            \"named\": false\n          },\n          {\n            \"type\": \":=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"?=\",\n            \"named\": false\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"paths\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"archive\",\n    \"named\": true,\n    \"fields\": {\n      \"archive\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"members\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"list\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"arguments\",\n    \"named\": true,\n    \"fields\": {\n      \"argument\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"text\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"automatic_variable\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"concatenation\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"conditional\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ifdef_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifeq_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifndef_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifneq_directive\",\n            \"named\": true\n          }\n        ]\n      },\n      \"consequence\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"\\t\",\n            \"named\": false\n          },\n          {\n            \"type\": \"RECIPEPREFIX_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"VPATH_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conditional\",\n            \"named\": true\n          },\n          {\n            \"type\": \"define_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"export_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"include_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"override_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"private_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"recipe_line\",\n            \"named\": true\n          },\n          {\n            \"type\": \"rule\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"undefine_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unexport_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vpath_directive\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"else_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"elsif_directive\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"define_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"+=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"::=\",\n            \"named\": false\n          },\n          {\n            \"type\": \":=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"?=\",\n            \"named\": false\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"raw_text\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"else_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"consequence\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"\\t\",\n            \"named\": false\n          },\n          {\n            \"type\": \"RECIPEPREFIX_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"VPATH_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conditional\",\n            \"named\": true\n          },\n          {\n            \"type\": \"define_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"export_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"include_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"override_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"private_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"recipe_line\",\n            \"named\": true\n          },\n          {\n            \"type\": \"rule\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"undefine_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unexport_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vpath_directive\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"elsif_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"ifdef_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifeq_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifndef_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifneq_directive\",\n            \"named\": true\n          }\n        ]\n      },\n      \"consequence\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"\\t\",\n            \"named\": false\n          },\n          {\n            \"type\": \"RECIPEPREFIX_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"VPATH_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"conditional\",\n            \"named\": true\n          },\n          {\n            \"type\": \"define_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"export_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"include_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"override_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"private_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"recipe_line\",\n            \"named\": true\n          },\n          {\n            \"type\": \"rule\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"undefine_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"unexport_directive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"vpath_directive\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"export_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"variables\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"list\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"variable_assignment\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"function_call\",\n    \"named\": true,\n    \"fields\": {\n      \"function\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"abspath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"addprefix\",\n            \"named\": false\n          },\n          {\n            \"type\": \"addsuffix\",\n            \"named\": false\n          },\n          {\n            \"type\": \"and\",\n            \"named\": false\n          },\n          {\n            \"type\": \"basename\",\n            \"named\": false\n          },\n          {\n            \"type\": \"call\",\n            \"named\": false\n          },\n          {\n            \"type\": \"dir\",\n            \"named\": false\n          },\n          {\n            \"type\": \"error\",\n            \"named\": false\n          },\n          {\n            \"type\": \"eval\",\n            \"named\": false\n          },\n          {\n            \"type\": \"file\",\n            \"named\": false\n          },\n          {\n            \"type\": \"filter\",\n            \"named\": false\n          },\n          {\n            \"type\": \"filter-out\",\n            \"named\": false\n          },\n          {\n            \"type\": \"findstring\",\n            \"named\": false\n          },\n          {\n            \"type\": \"firstword\",\n            \"named\": false\n          },\n          {\n            \"type\": \"flavor\",\n            \"named\": false\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": false\n          },\n          {\n            \"type\": \"if\",\n            \"named\": false\n          },\n          {\n            \"type\": \"info\",\n            \"named\": false\n          },\n          {\n            \"type\": \"join\",\n            \"named\": false\n          },\n          {\n            \"type\": \"lastword\",\n            \"named\": false\n          },\n          {\n            \"type\": \"notdir\",\n            \"named\": false\n          },\n          {\n            \"type\": \"or\",\n            \"named\": false\n          },\n          {\n            \"type\": \"origin\",\n            \"named\": false\n          },\n          {\n            \"type\": \"patsubst\",\n            \"named\": false\n          },\n          {\n            \"type\": \"realpath\",\n            \"named\": false\n          },\n          {\n            \"type\": \"sort\",\n            \"named\": false\n          },\n          {\n            \"type\": \"strip\",\n            \"named\": false\n          },\n          {\n            \"type\": \"subst\",\n            \"named\": false\n          },\n          {\n            \"type\": \"suffix\",\n            \"named\": false\n          },\n          {\n            \"type\": \"value\",\n            \"named\": false\n          },\n          {\n            \"type\": \"warning\",\n            \"named\": false\n          },\n          {\n            \"type\": \"wildcard\",\n            \"named\": false\n          },\n          {\n            \"type\": \"word\",\n            \"named\": false\n          },\n          {\n            \"type\": \"wordlist\",\n            \"named\": false\n          },\n          {\n            \"type\": \"words\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"arguments\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"ifdef_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"variable\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ifeq_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"arg0\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"arg1\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ifndef_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"variable\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"ifneq_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"arg0\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"arg1\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"include_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"filenames\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"list\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"list\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"makefile\",\n    \"named\": true,\n    \"root\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"RECIPEPREFIX_assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"VPATH_assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"conditional\",\n          \"named\": true\n        },\n        {\n          \"type\": \"define_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"export_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"include_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"override_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"private_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"rule\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"undefine_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unexport_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"vpath_directive\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"override_directive\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"define_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"undefine_directive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_assignment\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"paths\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"pattern_list\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"prerequisites\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"private_directive\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"variable_assignment\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"raw_text\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"recipe\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"conditional\",\n          \"named\": true\n        },\n        {\n          \"type\": \"recipe_line\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"recipe_line\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"shell_text\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"rule\",\n    \"named\": true,\n    \"fields\": {\n      \"normal\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"prerequisites\",\n            \"named\": true\n          }\n        ]\n      },\n      \"order_only\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"prerequisites\",\n            \"named\": true\n          }\n        ]\n      },\n      \"prerequisite\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"pattern_list\",\n            \"named\": true\n          }\n        ]\n      },\n      \"target\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"pattern_list\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"recipe\",\n          \"named\": true\n        },\n        {\n          \"type\": \"targets\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"shell_assignment\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"!=\",\n            \"named\": false\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"shell_command\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"shell_command\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"escape\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"shell_function\",\n    \"named\": true,\n    \"fields\": {\n      \"function\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"shell\",\n            \"named\": false\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"shell_command\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"shell_text\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"escape\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"string\",\n    \"named\": true,\n    \"fields\": {\n      \"string\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"\\\"\",\n            \"named\": false\n          },\n          {\n            \"type\": \"\'\",\n            \"named\": false\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"substitution_reference\",\n    \"named\": true,\n    \"fields\": {\n      \"pattern\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"replacement\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"text\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"archive\",\n            \"named\": true\n          },\n          {\n            \"type\": \"automatic_variable\",\n            \"named\": true\n          },\n          {\n            \"type\": \"concatenation\",\n            \"named\": true\n          },\n          {\n            \"type\": \"function_call\",\n            \"named\": true\n          },\n          {\n            \"type\": \"shell_function\",\n            \"named\": true\n          },\n          {\n            \"type\": \"string\",\n            \"named\": true\n          },\n          {\n            \"type\": \"substitution_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"variable_reference\",\n            \"named\": true\n          },\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"targets\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"text\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"escape\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"undefine_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"variable\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"unexport_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"variables\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"list\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"variable_assignment\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"+=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"::=\",\n            \"named\": false\n          },\n          {\n            \"type\": \":=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"=\",\n            \"named\": false\n          },\n          {\n            \"type\": \"?=\",\n            \"named\": false\n          }\n        ]\n      },\n      \"target_or_pattern\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"list\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"text\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"variable_reference\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"archive\",\n          \"named\": true\n        },\n        {\n          \"type\": \"automatic_variable\",\n          \"named\": true\n        },\n        {\n          \"type\": \"concatenation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"function_call\",\n          \"named\": true\n        },\n        {\n          \"type\": \"shell_function\",\n          \"named\": true\n        },\n        {\n          \"type\": \"string\",\n          \"named\": true\n        },\n        {\n          \"type\": \"substitution_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"variable_reference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"word\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"vpath_directive\",\n    \"named\": true,\n    \"fields\": {\n      \"directories\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"paths\",\n            \"named\": true\n          }\n        ]\n      },\n      \"pattern\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"word\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"\\t\",\n    \"named\": false\n  },\n  {\n    \"type\": \"!=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"\\\"\",\n    \"named\": false\n  },\n  {\n    \"type\": \"$\",\n    \"named\": false\n  },\n  {\n    \"type\": \"$$\",\n    \"named\": false\n  },\n  {\n    \"type\": \"%\",\n    \"named\": false\n  },\n  {\n    \"type\": \"&:\",\n    \"named\": false\n  },\n  {\n    \"type\": \"\'\",\n    \"named\": false\n  },\n  {\n    \"type\": \"(\",\n    \"named\": false\n  },\n  {\n    \"type\": \")\",\n    \"named\": false\n  },\n  {\n    \"type\": \"*\",\n    \"named\": false\n  },\n  {\n    \"type\": \"+\",\n    \"named\": false\n  },\n  {\n    \"type\": \"+=\",\n    \"named\": false\n  },\n  {\n    \"type\": \",\",\n    \"named\": false\n  },\n  {\n    \"type\": \"-\",\n    \"named\": false\n  },\n  {\n    \"type\": \"-include\",\n    \"named\": false\n  },\n  {\n    \"type\": \".RECIPEPREFIX\",\n    \"named\": false\n  },\n  {\n    \"type\": \"/\",\n    \"named\": false\n  },\n  {\n    \"type\": \":\",\n    \"named\": false\n  },\n  {\n    \"type\": \"::\",\n    \"named\": false\n  },\n  {\n    \"type\": \"::=\",\n    \"named\": false\n  },\n  {\n    \"type\": \":=\",\n    \"named\": false\n  },\n  {\n    \"type\": \";\",\n    \"named\": false\n  },\n  {\n    \"type\": \"<\",\n    \"named\": false\n  },\n  {\n    \"type\": \"=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"?\",\n    \"named\": false\n  },\n  {\n    \"type\": \"?=\",\n    \"named\": false\n  },\n  {\n    \"type\": \"@\",\n    \"named\": false\n  },\n  {\n    \"type\": \"D\",\n    \"named\": false\n  },\n  {\n    \"type\": \"F\",\n    \"named\": false\n  },\n  {\n    \"type\": \"VPATH\",\n    \"named\": false\n  },\n  {\n    \"type\": \"\\\\\",\n    \"named\": false\n  },\n  {\n    \"type\": \"^\",\n    \"named\": false\n  },\n  {\n    \"type\": \"abspath\",\n    \"named\": false\n  },\n  {\n    \"type\": \"addprefix\",\n    \"named\": false\n  },\n  {\n    \"type\": \"addsuffix\",\n    \"named\": false\n  },\n  {\n    \"type\": \"and\",\n    \"named\": false\n  },\n  {\n    \"type\": \"basename\",\n    \"named\": false\n  },\n  {\n    \"type\": \"call\",\n    \"named\": false\n  },\n  {\n    \"type\": \"comment\",\n    \"named\": true\n  },\n  {\n    \"type\": \"define\",\n    \"named\": false\n  },\n  {\n    \"type\": \"dir\",\n    \"named\": false\n  },\n  {\n    \"type\": \"else\",\n    \"named\": false\n  },\n  {\n    \"type\": \"endef\",\n    \"named\": false\n  },\n  {\n    \"type\": \"endif\",\n    \"named\": false\n  },\n  {\n    \"type\": \"error\",\n    \"named\": false\n  },\n  {\n    \"type\": \"escape\",\n    \"named\": true\n  },\n  {\n    \"type\": \"eval\",\n    \"named\": false\n  },\n  {\n    \"type\": \"export\",\n    \"named\": false\n  },\n  {\n    \"type\": \"file\",\n    \"named\": false\n  },\n  {\n    \"type\": \"filter\",\n    \"named\": false\n  },\n  {\n    \"type\": \"filter-out\",\n    \"named\": false\n  },\n  {\n    \"type\": \"findstring\",\n    \"named\": false\n  },\n  {\n    \"type\": \"firstword\",\n    \"named\": false\n  },\n  {\n    \"type\": \"flavor\",\n    \"named\": false\n  },\n  {\n    \"type\": \"foreach\",\n    \"named\": false\n  },\n  {\n    \"type\": \"if\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ifdef\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ifeq\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ifndef\",\n    \"named\": false\n  },\n  {\n    \"type\": \"ifneq\",\n    \"named\": false\n  },\n  {\n    \"type\": \"include\",\n    \"named\": false\n  },\n  {\n    \"type\": \"info\",\n    \"named\": false\n  },\n  {\n    \"type\": \"join\",\n    \"named\": false\n  },\n  {\n    \"type\": \"lastword\",\n    \"named\": false\n  },\n  {\n    \"type\": \"notdir\",\n    \"named\": false\n  },\n  {\n    \"type\": \"or\",\n    \"named\": false\n  },\n  {\n    \"type\": \"origin\",\n    \"named\": false\n  },\n  {\n    \"type\": \"override\",\n    \"named\": false\n  },\n  {\n    \"type\": \"patsubst\",\n    \"named\": false\n  },\n  {\n    \"type\": \"private\",\n    \"named\": false\n  },\n  {\n    \"type\": \"realpath\",\n    \"named\": false\n  },\n  {\n    \"type\": \"shell\",\n    \"named\": false\n  },\n  {\n    \"type\": \"sinclude\",\n    \"named\": false\n  },\n  {\n    \"type\": \"sort\",\n    \"named\": false\n  },\n  {\n    \"type\": \"strip\",\n    \"named\": false\n  },\n  {\n    \"type\": \"subst\",\n    \"named\": false\n  },\n  {\n    \"type\": \"suffix\",\n    \"named\": false\n  },\n  {\n    \"type\": \"undefine\",\n    \"named\": false\n  },\n  {\n    \"type\": \"unexport\",\n    \"named\": false\n  },\n  {\n    \"type\": \"value\",\n    \"named\": false\n  },\n  {\n    \"type\": \"vpath\",\n    \"named\": false\n  },\n  {\n    \"type\": \"warning\",\n    \"named\": false\n  },\n  {\n    \"type\": \"wildcard\",\n    \"named\": false\n  },\n  {\n    \"type\": \"word\",\n    \"named\": false\n  },\n  {\n    \"type\": \"word\",\n    \"named\": true\n  },\n  {\n    \"type\": \"wordlist\",\n    \"named\": false\n  },\n  {\n    \"type\": \"words\",\n    \"named\": false\n  },\n  {\n    \"type\": \"{\",\n    \"named\": false\n  },\n  {\n    \"type\": \"|\",\n    \"named\": false\n  },\n  {\n    \"type\": \"}\",\n    \"named\": false\n  }\n]";
Expand description

The content of the node-types.json file for this grammar.