浏览代码

Merge pull request #115 from antoinemadec/master

feat: add else_clause
pull/149/head
Amaan Qureshi 3 年前
提交者 GitHub
父节点
当前提交
6ef89c54e1
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 5 个文件被更改,包括 42561 次插入42190 次删除
  1. +3
    -4
      grammar.js
  2. +19
    -15
      src/grammar.json
  3. +16
    -1
      src/node-types.json
  4. +42513
    -42162
      src/parser.c
  5. +10
    -8
      test/corpus/statements.txt

+ 3
- 4
grammar.js 查看文件

@ -660,12 +660,11 @@ module.exports = grammar({
'if',
field('condition', $.parenthesized_expression),
field('consequence', $._statement),
optional(seq(
'else',
field('alternative', $._statement),
)),
optional(field('alternative', $.else_clause)),
)),
else_clause: $ => seq('else', $._statement),
switch_statement: $ => seq(
'switch',
field('condition', $.parenthesized_expression),

+ 19
- 15
src/grammar.json 查看文件

@ -3998,21 +3998,12 @@
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "else_clause"
}
},
{
"type": "BLANK"
@ -4022,6 +4013,19 @@
]
}
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
"switch_statement": {
"type": "SEQ",
"members": [

+ 16
- 1
src/node-types.json 查看文件

@ -1292,6 +1292,21 @@
}
}
},
{
"type": "else_clause",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "_statement",
"named": true
}
]
}
},
{
"type": "enum_specifier",
"named": true,
@ -1961,7 +1976,7 @@
"required": false,
"types": [
{
"type": "_statement",
"type": "else_clause",
"named": true
}
]

+ 42513
- 42162
src/parser.c
文件差异内容过多而无法显示
查看文件


+ 10
- 8
test/corpus/statements.txt 查看文件

@ -34,9 +34,10 @@ int main() {
(compound_statement
(expression_statement
(number_literal)))
(compound_statement
(expression_statement
(number_literal)))))))
(else_clause
(compound_statement
(expression_statement
(number_literal))))))))
================================================================================
For loops
@ -518,11 +519,12 @@ void f() {
(attribute
(identifier)))
(compound_statement))
(attributed_statement
(attribute_declaration
(attribute
(identifier)))
(compound_statement)))
(else_clause
(attributed_statement
(attribute_declaration
(attribute
(identifier)))
(compound_statement))))
(do_statement
(attributed_statement
(attribute_declaration

正在加载...
取消
保存