Allow digits in label names
Also, only allow a-zA-Z as the first character of label names.
This commit is contained in:
parent
6ac5bfc9e7
commit
5e9c50d618
3 changed files with 9 additions and 9 deletions
|
|
@ -39,11 +39,8 @@ incrementCurrentPos = do
|
|||
put s{sCurrentPos = succ $ sCurrentPos s}
|
||||
|
||||
parseInstructions' :: SParser ()
|
||||
parseInstructions' = sepBy parseInstruction' incrementCurrentPos >> lift (eof <|> fail atMaxAddress)
|
||||
parseInstructions' = sepBy parseInstruction' incrementCurrentPos >> lift eof
|
||||
where
|
||||
atMaxAddress = "already at maximum address (" ++ show (maxBound :: MimaAddress)
|
||||
++ ") - can't go any further"
|
||||
|
||||
parseInstruction' :: SParser ()
|
||||
parseInstruction' = do
|
||||
s <- get
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ module Mima.Assembler.Parser.Label
|
|||
, resolveAddress
|
||||
) where
|
||||
|
||||
import Data.Char
|
||||
import qualified Data.Map as Map
|
||||
import qualified Data.Text as T
|
||||
import Text.Megaparsec
|
||||
|
|
@ -33,8 +34,10 @@ mimaLabel = lexeme mimaLabel'
|
|||
|
||||
mimaLabel' :: Parser MimaLabel
|
||||
mimaLabel' = label "label" $ do
|
||||
name <- takeWhile1P Nothing (\c -> isAlphabet c || isConnecting c)
|
||||
firstChar <- satisfy isAlphabet
|
||||
otherChars <- takeWhileP Nothing (\c -> isAlphabet c || isConnecting c || isDigit c)
|
||||
offset <- getOffset
|
||||
let name = T.singleton firstChar <> otherChars
|
||||
pure MimaLabel{lName = name, lOffset = offset}
|
||||
|
||||
failAtLabel :: MimaLabel -> String -> Parser a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue