Просмотр исходного кода

Merge pull request #8 from tree-sitter/immediate-tokens

Use immediate token API for preprocessor function definitions
pull/16/merge
Max Brunsfeld 8 лет назад
committed by GitHub
Родитель
Сommit
70dc8f375e
Не найден GPG ключ соответствующий данной подписи Идентификатор GPG ключа: 4AEE18F83AFDEB23
5 измененных файлов: 42082 добавлений и 45544 удалений
  1. +4
    -4
      corpus/statements.txt
  2. +7
    -7
      grammar.js
  3. +1
    -1
      package.json
  4. +13
    -60
      src/grammar.json
  5. +42057
    -45472
      src/parser.c

+ 4
- 4
corpus/statements.txt Просмотреть файл

@ -20,9 +20,9 @@ int main() {
(primitive_type) (primitive_type)
(function_declarator (identifier) (parameter_list)) (function_declarator (identifier) (parameter_list))
(compound_statement (compound_statement
(if_statement (identifier)
(if_statement (parenthesized_expression (identifier))
(expression_statement (number_literal))) (expression_statement (number_literal)))
(if_statement (logical_expression (identifier))
(if_statement (parenthesized_expression (logical_expression (identifier)))
(compound_statement (compound_statement
(expression_statement (number_literal))) (expression_statement (number_literal)))
(compound_statement (compound_statement
@ -81,7 +81,7 @@ int main() {
(primitive_type) (primitive_type)
(function_declarator (identifier) (parameter_list)) (function_declarator (identifier) (parameter_list))
(compound_statement (compound_statement
(while_statement (identifier)
(while_statement (parenthesized_expression (identifier))
(expression_statement (call_expression (expression_statement (call_expression
(identifier) (identifier)
(argument_list (string_literal)))))))) (argument_list (string_literal))))))))
@ -108,7 +108,7 @@ recur:
(expression_statement (assignment_expression (expression_statement (assignment_expression
(identifier) (identifier)
(call_expression (field_expression (identifier) (field_identifier)) (argument_list))))) (call_expression (field_expression (identifier) (field_identifier)) (argument_list)))))
(if_statement (identifier) (goto_statement (statement_identifier))))))
(if_statement (parenthesized_expression (identifier)) (goto_statement (statement_identifier))))))
============================================ ============================================
Comments with asterisks Comments with asterisks

+ 7
- 7
grammar.js Просмотреть файл

@ -88,7 +88,7 @@ module.exports = grammar({
preproc_def: $ => seq( preproc_def: $ => seq(
preprocessor('define'), preprocessor('define'),
$.identifier, $.identifier,
optional(seq(/[ \t]+/, $.preproc_arg)),
optional($.preproc_arg),
'\n' '\n'
), ),
@ -101,12 +101,12 @@ module.exports = grammar({
), ),
preproc_params: $ => seq( preproc_params: $ => seq(
'(', commaSep(choice($.identifier, '...')), ')'
token.immediate('('), commaSep(choice($.identifier, '...')), ')'
), ),
preproc_call: $ => seq( preproc_call: $ => seq(
$.preproc_directive, $.preproc_directive,
optional(seq(/[ \t]+/, $.preproc_arg)),
optional($.preproc_arg),
'\n' '\n'
), ),
@ -416,7 +416,7 @@ module.exports = grammar({
if_statement: $ => prec.right(seq( if_statement: $ => prec.right(seq(
'if', 'if',
'(', $._expression, ')',
$.parenthesized_expression,
$._statement, $._statement,
optional(seq( optional(seq(
'else', 'else',
@ -426,7 +426,7 @@ module.exports = grammar({
switch_statement: $ => seq( switch_statement: $ => seq(
'switch', 'switch',
'(', $._expression, ')',
$.parenthesized_expression,
$._statement $._statement
), ),
@ -445,7 +445,7 @@ module.exports = grammar({
while_statement: $ => seq( while_statement: $ => seq(
'while', 'while',
'(', $._expression, ')',
$.parenthesized_expression,
$._statement $._statement
), ),
@ -453,7 +453,7 @@ module.exports = grammar({
'do', 'do',
$._statement, $._statement,
'while', 'while',
'(', $._expression, ')'
$.parenthesized_expression
), ),
for_statement: $ => seq( for_statement: $ => seq(

+ 1
- 1
package.json Просмотреть файл

@ -13,7 +13,7 @@
"nan": "^2.10.0" "nan": "^2.10.0"
}, },
"devDependencies": { "devDependencies": {
"tree-sitter-cli": "^0.13.1"
"tree-sitter-cli": "^0.13.4"
}, },
"scripts": { "scripts": {
"build": "tree-sitter generate && node-gyp build", "build": "tree-sitter generate && node-gyp build",

+ 13
- 60
src/grammar.json Просмотреть файл

@ -160,17 +160,8 @@
"type": "CHOICE", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[ \\t]+"
},
{
"type": "SYMBOL",
"name": "preproc_arg"
}
]
"type": "SYMBOL",
"name": "preproc_arg"
}, },
{ {
"type": "BLANK" "type": "BLANK"
@ -225,8 +216,11 @@
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "STRING",
"value": "("
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "("
}
}, },
{ {
"type": "CHOICE", "type": "CHOICE",
@ -296,17 +290,8 @@
"type": "CHOICE", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[ \\t]+"
},
{
"type": "SYMBOL",
"name": "preproc_arg"
}
]
"type": "SYMBOL",
"name": "preproc_arg"
}, },
{ {
"type": "BLANK" "type": "BLANK"
@ -2531,17 +2516,9 @@
"type": "STRING", "type": "STRING",
"value": "if" "value": "if"
}, },
{
"type": "STRING",
"value": "("
},
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
"name": "parenthesized_expression"
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
@ -2578,17 +2555,9 @@
"type": "STRING", "type": "STRING",
"value": "switch" "value": "switch"
}, },
{
"type": "STRING",
"value": "("
},
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
"name": "parenthesized_expression"
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
@ -2651,17 +2620,9 @@
"type": "STRING", "type": "STRING",
"value": "while" "value": "while"
}, },
{
"type": "STRING",
"value": "("
},
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
"name": "parenthesized_expression"
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
@ -2684,17 +2645,9 @@
"type": "STRING", "type": "STRING",
"value": "while" "value": "while"
}, },
{
"type": "STRING",
"value": "("
},
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
"name": "parenthesized_expression"
} }
] ]
}, },

+ 42057
- 45472
src/parser.c
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


Загрузка…
Отмена
Сохранить