Pārlūkot izejas kodu

parser: fix: explicitVar locale

gretmn102 3 gadi atpakaļ
vecāks
revīzija
34f088ea5c
2 mainītis faili ar 6 papildinājumiem un 6 dzēšanām
  1. 4 4
      QSParse/Parsec.fs
  2. 2 2
      QSParse/ParserExpr.fs

+ 4 - 4
QSParse/Parsec.fs

@@ -68,18 +68,18 @@ let pAssign stmts =
         appendToken Tokens.TokenType.Type
             ((pstringCI "set" <|> pstringCI "let") .>>? notFollowedVarCont)
         .>> ws
-        >>. (pexplicitVar VarHighlightKind.WriteAccess
+        >>. (pexplicitVar VarHighlightKind.WriteAccess false
              <|> (pImplicitVarWhenAssign ident false |>> fun name -> ImplicitNumericType, name))
         .>>? ws >>=? assign false
     let pLocal =
         appendToken Tokens.TokenType.Type
             (pstringCI "local" .>>? notFollowedVarCont)
         .>> ws
-        >>. (pexplicitVar VarHighlightKind.WriteAccess
+        >>. (pexplicitVar VarHighlightKind.WriteAccess true
              <|> (pImplicitVarWhenAssign ident true |>> fun name -> ImplicitNumericType, name))
         .>> ws >>=? assign true
     let pExplicitAssign =
-        pexplicitVar VarHighlightKind.WriteAccess
+        pexplicitVar VarHighlightKind.WriteAccess false
         .>>? ws >>=? assign false
 
     let pImlicitAssign =
@@ -332,7 +332,7 @@ let pstmt =
     let pFor =
         let pForHeader =
             genKeywordParser Tokens.TokenType.For "for" >>. ws
-            >>. (pexplicitVar VarHighlightKind.WriteAccess
+            >>. (pexplicitVar VarHighlightKind.WriteAccess false
                  <|> (pImplicitVarWhenAssign ident false |>> fun name -> ImplicitNumericType, name))
             .>> ws .>> appendToken Tokens.TokenType.OperatorAssignment (pchar '=')
             .>> ws .>>. pexpr

+ 2 - 2
QSParse/ParserExpr.fs

@@ -18,7 +18,7 @@ let pbinaryOperator : _ Parser =
     |> choice
 
 /// берёт только то, что начинается с `#` или `$`
-let pexplicitVar varHighlightKind : _ Parser =
+let pexplicitVar varHighlightKind isLocal : _ Parser =
     let isIdentifierFirstChar c = isLetter c || c = '_'
     let p = many1Satisfy2L isIdentifierFirstChar isIdentifierChar "identifier"
     // TODO: или просто `many1Satisfy isIdentifierChar` ?
@@ -48,7 +48,7 @@ let pexplicitVar varHighlightKind : _ Parser =
             | ImplicitNumericType -> failwith "Not Implemented"
         appendToken2 Tokens.Variable range
         >>. appendHover2 (RawDescription msg) range
-        >>. appendVarHighlight range (typ, varName) varHighlightKind false
+        >>. appendVarHighlight range (typ, varName) varHighlightKind isLocal
         >>. preturn (typ, varName)
 type ProcOrFunc =
     | Procedure of string