aboutsummaryrefslogtreecommitdiffstats
path: root/FMark/src/Common/Lexer/Lexer.fs
diff options
context:
space:
mode:
Diffstat (limited to 'FMark/src/Common/Lexer/Lexer.fs')
-rw-r--r--FMark/src/Common/Lexer/Lexer.fs25
1 files changed, 13 insertions, 12 deletions
diff --git a/FMark/src/Common/Lexer/Lexer.fs b/FMark/src/Common/Lexer/Lexer.fs
index 5e2c7d6..a7bd111 100644
--- a/FMark/src/Common/Lexer/Lexer.fs
+++ b/FMark/src/Common/Lexer/Lexer.fs
@@ -48,23 +48,23 @@ let nextToken state s =
match s, state with
| EscapedCharTok n, _ -> n, state
| HTMLSingleton (s, r), Normal ->
- (HTMLLIT s, r), Normal
+ (LITERAL s, r), Normal
| HTMLStartTag (s, [t], r), Normal ->
- (HTMLLIT s, r), InHTMLTag (t, 1)
+ (LITERAL s, r), InHTMLTag (t, 1)
| HTMLStartTag (s, [t], r), InHTMLTag (tag, d) ->
if t = tag then
- (HTMLLIT s, r), InHTMLTag (tag, d+1)
+ (LITERAL s, r), InHTMLTag (tag, d+1)
else
- (HTMLLIT s, r), InHTMLTag (tag, d)
+ (LITERAL s, r), InHTMLTag (tag, d)
| HTMLEndTag (s, [t], r), InHTMLTag (tag, d) ->
if t = tag then
- if d = 1 then (HTMLLIT s, r), Normal
- else (HTMLLIT s, r), InHTMLTag (tag, d-1)
- else (HTMLLIT s, r), InHTMLTag (tag, d)
+ if d = 1 then (LITERAL s, r), Normal
+ else (LITERAL s, r), InHTMLTag (tag, d-1)
+ else (LITERAL s, r), InHTMLTag (tag, d)
| RegexMatch "^.+?(?=<)" (s, _, r), InHTMLTag (t, d) ->
- (HTMLLIT s, r), InHTMLTag (t, d)
+ (LITERAL s, r), InHTMLTag (t, d)
| RegexMatch "^.*" (s, _, r), InHTMLTag (t, d) ->
- (HTMLLIT s, r), InHTMLTag (t, d)
+ (LITERAL s, r), InHTMLTag (t, d)
| CharacterTok n, _ -> n, state
| RegexMatch @"^\s+" (m, _, s), _ ->
(replaceChars "\t" " " m
@@ -80,8 +80,9 @@ let nextToken state s =
/// Lexes a whole string and returns the result as a Token list
let lexS state source =
let rec lexS' state s tokList =
- match s with
- | ""-> ENDLINE :: tokList
+ match s, state with
+ | "", InHTMLTag _ -> tokList
+ | "", _ -> ENDLINE :: tokList
| _ ->
let (nt, st'), nstate = nextToken state s
nt :: tokList |> lexS' nstate st'
@@ -102,7 +103,7 @@ let returnTokens = function
| _, InCodeBlock (s, l) ->
[CODEBLOCK (s, l); ENDLINE]
| tok, InHTMLTag (str, _) ->
- tok @ [HTMLLIT str; ENDLINE]
+ tok @ [LITERAL str; ENDLINE]
| tok, _ ->
tok