racket/collects/profj/comb-parsers/java-signatures.scm
2008-02-29 16:08:53 +00:00

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))
)