108 lines
4.3 KiB
Scheme
108 lines
4.3 KiB
Scheme
(module java-signatures mzscheme
|
|
|
|
(require mzlib/unit)
|
|
|
|
(require parser-tools/lex
|
|
(lib "combinator-unit.ss" "combinator-parser")
|
|
mzlib/string)
|
|
|
|
(provide (all-defined))
|
|
|
|
;Terminal signatures
|
|
|
|
(define-signature java-operators^
|
|
((terminals Operators
|
|
(PIPE OR OREQUAL GT LT ! ~ ? : == LTEQ GTEQ != && ++ -- PLUS
|
|
MINUS DIVIDE & ^T % << >> >>> += -= *= /= &= ^= %= <<= >>= >>>=))))
|
|
|
|
(define-signature java-separators^
|
|
((terminals Separators
|
|
(O_PAREN C_PAREN O_BRACE C_BRACE O_BRACKET C_BRACKET SEMI_COLON
|
|
PERIOD COMMA EQUAL TIMES))))
|
|
|
|
(define-signature java-literals^
|
|
((terminals EmptyLiterals (NULL_LIT TRUE_LIT FALSE_LIT EOF))))
|
|
|
|
(define-signature java-expression-keywords^
|
|
((terminals ExpressionKeywords (instanceof new))))
|
|
|
|
(define-signature java-statement-keywords^
|
|
((terminals StatementKeywords (break caseT catch continue ifT doT elseT
|
|
for return switch throw try while finally))))
|
|
|
|
(define-signature java-definition-keywords^
|
|
((terminals DefinitionKeywords (abstract class extends final private implements import
|
|
interface native package protected public static
|
|
strictfp synchronized throws transient volatile))))
|
|
|
|
(define-signature java-type-keywords^
|
|
((terminals TypeKeywords (boolean byte char double float int long short voidT))))
|
|
|
|
(define-signature java-reserved^
|
|
((terminals ReservedWords (default const goto))))
|
|
|
|
(define-signature java-extras^
|
|
((terminals ExtraKeywords (dynamic check expect within -> ->> ->>> test tests testcase))))
|
|
|
|
(define-signature java-ids^ ((terminals java-vals (IDENTIFIER this super))))
|
|
|
|
(define-signature java-vals^
|
|
((terminals java-vals (STRING_LIT CHAR_LIT INTEGER_LIT LONG_LIT FLOAT_LIT DOUBLE_LIT
|
|
STRING_ERROR NUMBER_ERROR HEX_LIT OCT_LIT
|
|
HEXL_LIT OCTL_LIT))))
|
|
|
|
(define-signature java-specials^
|
|
((terminals special-toks (EXAMPLE TEST_SUITE IMAGE_SPECIAL OTHER_SPECIAL))))
|
|
|
|
;General purpose signatures
|
|
(define-signature general-productions^ (comma-sep #;variable-declaration #;name))
|
|
|
|
(define-signature java-variables^ (identifier name variable-declaration))
|
|
|
|
;Types, modifiers, operator signatures
|
|
|
|
(define-signature java-types^ (integer-types inexact-types numeric-type prim-type
|
|
other-type-base value+name-type method-type array-type))
|
|
(define-signature java-access^ (access-mods global-mods method-mods))
|
|
(define-signature java-ops^ (math-ops shift-ops compare-ops bool-ops bit-ops assignment-ops
|
|
bin-ops un-assignment un-op))
|
|
|
|
;Expression signatures
|
|
(define-signature expr-lits^ (boolean-lits textual-lits prim-numeric-lits null-lit numeric-lits
|
|
double-lits literals all-literals))
|
|
|
|
(define-signature expr-terms^ (new-class new-array simple-method-call
|
|
assignment unary-assignment-front cast
|
|
super-call))
|
|
|
|
(define-signature expr-tails^ (field-access-end
|
|
array-access-end array-init
|
|
binary-expression-end if-expr-end
|
|
method-call-end unary-assignment-back instanceof-back))
|
|
|
|
(define-signature expr-terms+^ extends expr-terms^ (checks))
|
|
|
|
;Statement signatures
|
|
|
|
(define-signature statements^ (if-s return-s this-call super-ctor-call
|
|
block expression-stmt while-l do-while for-l
|
|
break-s cont-s init))
|
|
|
|
;Member signatures
|
|
|
|
(define-signature fields^ (make-field arg args))
|
|
|
|
(define-signature methods^ (method-signature method-header make-method))
|
|
|
|
(define-signature ctors^ (make-constructor))
|
|
|
|
;Definition signatures
|
|
|
|
(define-signature interfaces^ (interface-body interface-def))
|
|
|
|
(define-signature classes^ (class-body implements-dec extend-dec class-def))
|
|
|
|
(define-signature top-forms^ (top-member import-dec make-program))
|
|
|
|
)
|