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

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)
(function_declarator (identifier) (parameter_list))
(compound_statement
(if_statement (identifier)
(if_statement (parenthesized_expression (identifier))
(expression_statement (number_literal)))
(if_statement (logical_expression (identifier))
(if_statement (parenthesized_expression (logical_expression (identifier)))
(compound_statement
(expression_statement (number_literal)))
(compound_statement
@ -81,7 +81,7 @@ int main() {
(primitive_type)
(function_declarator (identifier) (parameter_list))
(compound_statement
(while_statement (identifier)
(while_statement (parenthesized_expression (identifier))
(expression_statement (call_expression
(identifier)
(argument_list (string_literal))))))))
@ -108,7 +108,7 @@ recur:
(expression_statement (assignment_expression
(identifier)
(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

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

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

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

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

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

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

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


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