<NME> Tuples.txt
<BEF> Elm File
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('magicNumber')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmNumberConstantExpr(NUMBER_CONSTANT_EXPR)
      PsiElement(NUMBER_LITERAL)('42')
  PsiElement(VIRTUAL_END_DECL)('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f1')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmParenthesizedExpr(PARENTHESIZED_EXPR)
      PsiElement(LEFT_PARENTHESIS)('(')
      ElmValueExpr(VALUE_EXPR)
        ElmValueQID(VALUE_QID)
          PsiElement(LOWER_CASE_IDENTIFIER)('mag')
          ElmValueExpr(VALUE_EXPR)
            ElmValueQID(VALUE_QID)
              PsiElement(LOWER_CASE_IDENTIFIER)('mag')
        PsiErrorElement:'-', <value expr>, BACKSLASH, CASE, COMMA, IF, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE, OPERATOR_IDENTIFIER, RIGHT_PARENTHESIS or START_GLSL_CODE expected, got '
'
          <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmTupleExpr(TUPLE_EXPR)
      PsiElement(LEFT_PARENTHESIS)('(')
      ElmValueExpr(VALUE_EXPR)
        ElmValueQID(VALUE_QID)
          PsiElement(LOWER_CASE_IDENTIFIER)('magicNumber')
      PsiElement(COMMA)(',')
      PsiErrorElement:<expr> expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f3')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmTupleExpr(TUPLE_EXPR)
      PsiElement(LEFT_PARENTHESIS)('(')
      ElmValueExpr(VALUE_EXPR)
        ElmValueQID(VALUE_QID)
          PsiElement(LOWER_CASE_IDENTIFIER)('magicNumber')
      PsiElement(COMMA)(',')
      PsiWhiteSpace(' ')
      ElmValueExpr(VALUE_EXPR)
        ElmValueQID(VALUE_QID)
          PsiElement(LOWER_CASE_IDENTIFIER)('m')
      PsiErrorElement:<expr>, COMMA, OPERATOR_IDENTIFIER or RIGHT_PARENTHESIS expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f4')
    PsiWhiteSpace(' ')
          ElmValueExpr(VALUE_EXPR)
            ElmValueQID(VALUE_QID)
              PsiElement(LOWER_CASE_IDENTIFIER)('m')
        PsiErrorElement:'-', <value expr>, BACKSLASH, CASE, COMMA, IF, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE, OPERATOR_IDENTIFIER, RIGHT_PARENTHESIS or START_GLSL_CODE expected, got '
'
          <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
      PsiElement(COMMA)(',')
      PsiErrorElement:<expr> expected, got ')'
        <empty list>
  PsiWhiteSpace(' ')
  PsiElement(RIGHT_PARENTHESIS)(')')
  PsiElement(VIRTUAL_END_DECL)('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('magicWord')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmStringConstantExpr(STRING_CONSTANT_EXPR)
      PsiElement(OPEN_QUOTE)('"')
      PsiElement(REGULAR_STRING_PART)('please')
      PsiElement(CLOSE_QUOTE)('"')
<MSG> Add all remaining function call targets to grammar (#91)

I went through the `Operand` rule and checked all of them to see which ones could ever be valid call targets. I should have done that initially.

Fixes #90

Instead of having an equivalent to `FunctionCallTarget`, the Elm compiler allows any operand as a call target, and issues errors from the type inference stage. I'd like to do the same, but defining `FunctionCall ::= FunctionCallTarget Operand+` caused empty records to parse incorrectly, for a reason I couldn't identify.

Additionally, I noticed that, unlike Kotlin and many other languages, Elm forbids whitespace after the `-` tokens in negation expressions. `x = - 1` is a syntax error. I added a manual parser to match this behavior.
<DFF> @@ -22,7 +22,7 @@ Elm File
           ElmValueExpr(VALUE_EXPR)
             ElmValueQID(VALUE_QID)
               PsiElement(LOWER_CASE_IDENTIFIER)('mag')
-        PsiErrorElement:'-', <value expr>, BACKSLASH, CASE, COMMA, IF, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE, OPERATOR_IDENTIFIER, RIGHT_PARENTHESIS or START_GLSL_CODE expected, got '
+        PsiErrorElement:<value expr>, BACKSLASH, CASE, COMMA, IF, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE, OPERATOR_IDENTIFIER, RIGHT_PARENTHESIS or START_GLSL_CODE expected, got '
 '
           <empty list>
   PsiElement(VIRTUAL_END_DECL)('\n')
@@ -63,7 +63,7 @@ Elm File
           ElmValueExpr(VALUE_EXPR)
             ElmValueQID(VALUE_QID)
               PsiElement(LOWER_CASE_IDENTIFIER)('m')
-        PsiErrorElement:'-', <value expr>, BACKSLASH, CASE, COMMA, IF, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE, OPERATOR_IDENTIFIER, RIGHT_PARENTHESIS or START_GLSL_CODE expected, got '
+        PsiErrorElement:<value expr>, BACKSLASH, CASE, COMMA, IF, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE, OPERATOR_IDENTIFIER, RIGHT_PARENTHESIS or START_GLSL_CODE expected, got '
 '
           <empty list>
   PsiElement(VIRTUAL_END_DECL)('\n')

Add all remaining function call targets to grammar (#91)