================================================================================
Can parse comments
================================================================================

-- hello
SELECT 1;

--------------------------------------------------------------------------------

(program
  (comment)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal))))))

================================================================================
Can parse comments anywhere...
================================================================================

-- hello
SELECT 1; --hi
--hi

--------------------------------------------------------------------------------

(program
  (comment)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal)))))
  (comment)
  (comment))

================================================================================
...including between statements
================================================================================

-- hello
SELECT 1; --hi
-- hi again
SELECT 2;

--------------------------------------------------------------------------------

(program
  (comment)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal)))))
  (comment)
  (comment)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal))))))

================================================================================
Simple marginalia
================================================================================

/* application=super-app */
SELECT id /* MAX_EXECUTION_TIME(500) */
FROM my_table;

--------------------------------------------------------------------------------

(program
  (marginalia)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          value: (field
            name: (identifier)))))
    (marginalia)
    (from
      (keyword_from)
      (relation
        (object_reference
          name: (identifier))))))

================================================================================
Can parse delete with marginalia
================================================================================

DELETE /* MAX_EXECUTION_TIME(500) */
FROM my_table;

--------------------------------------------------------------------------------

(program
  (statement
    (delete
      (keyword_delete))
    (marginalia)
    (from
      (keyword_from)
      (object_reference
        name: (identifier)))))

================================================================================
Multiline marginalia, basic
================================================================================

/*
This is a query
With a multiline comment
*/
SELECT id
/*
SELECT id FROM my_table;
*/
FROM my_table;

--------------------------------------------------------------------------------

(program
  (marginalia)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          value: (field
            name: (identifier)))))
    (marginalia)
    (from
      (keyword_from)
      (relation
        (object_reference
          name: (identifier))))))

================================================================================
Multiline marginalia, empty
================================================================================

/*
*/
SELECT id
/*

*/
FROM my_table;

--------------------------------------------------------------------------------

(program
  (marginalia)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          value: (field
            name: (identifier)))))
    (marginalia)
    (from
      (keyword_from)
      (relation
        (object_reference
          name: (identifier))))))

================================================================================
Marginalia, more symbols
================================================================================

/**
 * Javadoc style
 * -- with an inline comment
 */
SELECT id
/******/
FROM my_table;

--------------------------------------------------------------------------------

(program
  (marginalia)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          value: (field
            name: (identifier)))))
    (marginalia)
    (from
      (keyword_from)
      (relation
        (object_reference
          name: (identifier))))))

================================================================================
Comment inside string literal
================================================================================

SELECT '-- foo' FROM bar;

--------------------------------------------------------------------------------

(program
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal))))
    (from
      (keyword_from)
      (relation
        (object_reference
          (identifier))))))

================================================================================
Marginalia inside string literal
================================================================================

SELECT '/* foo */' FROM bar;

--------------------------------------------------------------------------------

(program
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal))))
    (from
      (keyword_from)
      (relation
        (object_reference
          (identifier))))))

================================================================================
Empty comment
================================================================================

--
SELECT 1;

--------------------------------------------------------------------------------

(program
  (comment)
  (statement
    (select
      (keyword_select)
      (select_expression
        (term
          (literal))))))
