# HG changeset patch # User unc0rr # Date 1420471843 -10800 # Node ID 161b9104b7b3f676179cb15fe966b0868cf9b895 # Parent fcef7d62d3c47ddf828332a5b5f8ba4dcc6f3cb1 Support _S and _P in initialization expressions diff -r fcef7d62d3c4 -r 161b9104b7b3 tools/pas2c/Pas2C.hs --- a/tools/pas2c/Pas2C.hs Mon Jan 05 11:35:04 2015 +0300 +++ b/tools/pas2c/Pas2C.hs Mon Jan 05 18:30:43 2015 +0300 @@ -668,6 +668,7 @@ initExpr2C' (InitHexNumber s) = return $ text "0x" <> (text . map toLower $ s) initExpr2C' (InitString [a]) = return . quotes $ text [a] initExpr2C' (InitString s) = return $ strInit s +initExpr2C' (InitPChar s) = return $ doubleQuotes (text $ escapeStr s) initExpr2C' (InitChar a) = return $ text "0x" <> text (showHex (read a) "") initExpr2C' (InitReference i) = id2C IOLookup i initExpr2C' (InitRecord fields) = do diff -r fcef7d62d3c4 -r 161b9104b7b3 tools/pas2c/PascalParser.hs --- a/tools/pas2c/PascalParser.hs Mon Jan 05 11:35:04 2015 +0300 +++ b/tools/pas2c/PascalParser.hs Mon Jan 05 18:30:43 2015 +0300 @@ -629,6 +629,8 @@ , try $ integer pas >>= \i -> notFollowedBy (char' '.') >> (return . InitNumber . show) i , try $ float pas >>= return . InitFloat . show , try $ integer pas >>= return . InitNumber . show + , try (string' "_S" >> stringLiteral pas) >>= return . InitString + , try (string' "_P" >> stringLiteral pas) >>= return . InitPChar , stringLiteral pas >>= return . InitString , char' '#' >> many digit >>= \c -> comments >> return (InitChar c) , char' '$' >> many hexDigit >>= \h -> comments >> return (InitHexNumber h) diff -r fcef7d62d3c4 -r 161b9104b7b3 tools/pas2c/PascalUnitSyntaxTree.hs --- a/tools/pas2c/PascalUnitSyntaxTree.hs Mon Jan 05 11:35:04 2015 +0300 +++ b/tools/pas2c/PascalUnitSyntaxTree.hs Mon Jan 05 18:30:43 2015 +0300 @@ -89,6 +89,7 @@ | InitNumber String | InitHexNumber String | InitString String + | InitPChar String | InitChar String | BuiltInFunction String [InitExpression] | InitSet [InitExpression]