Added address literals

I don't know why someone would want to use a pointer literal in a
script, but now you can because there's an opcode for it and fuck it.
This commit is contained in:
arookas 2016-02-03 23:02:25 -05:00
parent 05c8bce662
commit e8c2b09105
3 changed files with 17 additions and 0 deletions

View file

@ -52,6 +52,21 @@ namespace arookas {
}
}
class sunAddressLiteral : sunToken<uint>, sunTerm {
public sunAddressLiteral(sunSourceLocation location, string literal)
: base(location) {
Value = UInt32.Parse(literal.Substring(1), NumberStyles.AllowHexSpecifier);
}
public override void Compile(sunCompiler compiler) {
compiler.Binary.WriteADR(Value);
}
sunExpressionFlags sunTerm.GetExpressionFlags(sunContext context) {
return sunExpressionFlags.Literals;
}
}
class sunStringLiteral : sunToken<string>, sunTerm {
public sunStringLiteral(sunSourceLocation location, string literal)
: base(location) {

View file

@ -93,6 +93,7 @@ namespace arookas {
case __sunConstants.INT_NUMBER: return new sunIntLiteral(location, token);
case __sunConstants.HEX_NUMBER: return new sunHexLiteral(location, token);
case __sunConstants.DEC_NUMBER: return new sunFloatLiteral(location, token);
case __sunConstants.ADR_NUMBER: return new sunAddressLiteral(location, token);
case __sunConstants.STRING: return new sunStringLiteral(location, token);
case __sunConstants.IDENTIFIER: return new sunIdentifier(location, token);
case __sunConstants.ELLIPSIS: return new sunEllipsis(location);

View file

@ -94,6 +94,7 @@ IDENTIFIER = <<[_A-Za-z][_A-Za-z0-9]*>>
DEC_NUMBER = <<-?[0-9]+\.[0-9]+>>
HEX_NUMBER = <<-?0x[0-9A-Fa-f]+>>
INT_NUMBER = <<-?[0-9]+>>
ADR_NUMBER = <<\$[0-9A-Fa-f]{8}>>
STRING = <<"(\\.|[^"])*">>
%productions%