Skip to content

Commit

Permalink
Created a set of tests for the lexer and started getting clojure to p…
Browse files Browse the repository at this point in the history
…roper grammer for CUP.
  • Loading branch information
Eric Thor authored and Eric Thor committed Oct 28, 2009
1 parent 85b33fd commit 001342d
Show file tree
Hide file tree
Showing 9 changed files with 944 additions and 750 deletions.
366 changes: 214 additions & 152 deletions src/ide-tools/src/Example/ClojureParser.java

Large diffs are not rendered by default.

127 changes: 64 additions & 63 deletions src/ide-tools/src/Example/ClojureSym.java
@@ -1,84 +1,85 @@

//----------------------------------------------------
// The following code was generated by CUP v0.11a beta 20060608
// Tue Oct 27 14:28:48 EDT 2009
// Wed Oct 28 16:52:58 EDT 2009
//----------------------------------------------------

package Example;

/** CUP generated interface containing symbol constants. */
public interface ClojureSym {
/* terminals */
public static final int LINE_COMMENT = 41;
public static final int NUM_BIG_DECIMAL = 19;
public static final int LONG_LITERAL = 62;
public static final int STRING_LITERAL = 68;
public static final int AT = 34;
public static final int NUM_INT_PART = 13;
public static final int NEWLINE = 2;
public static final int RIGHT_PAREN = 21;
public static final int BIG_SUFFIX = 7;
public static final int LONG_SUFFIX = 9;
public static final int WRONG_STRING_LITERAL = 69;
public static final int STRING_CONTENT = 38;
public static final int CHAR = 36;
public static final int CHAR_LITERAL = 67;
public static final int OTHER = 44;
public static final int SHARP_HAT = 29;
public static final int BIG_DECIMAL_LITERAL = 65;
public static final int NUM_INT = 14;
public static final int RIGHT_SQUARE = 23;
public static final int COMMA = 4;
public static final int DOUBLE_LITERAL = 65;
public static final int NUM_BIG_DECIMAL = 19;
public static final int NUM_DOUBLE = 18;
public static final int IMPLICIT_ARG = 32;
public static final int WRONG_STRING_LITERAL = 70;
public static final int INTEGER_LITERAL = 61;
public static final int FALSE = 53;
public static final int LEFT_CURLY = 24;
public static final int NIL = 51;
public static final int SHARP_CURLY = 26;
public static final int TILDA = 33;
public static final int RATIO = 67;
public static final int ONE_NL = 36;
public static final int BAD_CHARACTER = 54;
public static final int OTHER_REDUCED = 47;
public static final int OTHER = 45;
public static final int TRUE = 52;
public static final int SHARP = 29;
public static final int NoDigit = 46;
public static final int FLOAT_SUFFIX = 8;
public static final int symATOM = 58;
public static final int WHITESPACE = 3;
public static final int symNS_SEP = 57;
public static final int TILDA = 32;
public static final int NIL = 50;
public static final int SLASH_LETTER = 43;
public static final int TILDAAT = 34;
public static final int COMMA = 4;
public static final int RIGHT_CURLY = 25;
public static final int LONG_LITERAL = 63;
public static final int QUOTE = 27;
public static final int LINE_COMMENT = 42;
public static final int LEFT_PAREN = 20;
public static final int CHAR = 37;
public static final int NUM_BIG_INT = 16;
public static final int BACKQUOTE = 28;
public static final int SLASH_LETTER = 44;
public static final int BIG_SUFFIX = 7;
public static final int DIGIT = 6;
public static final int NULL_LITERAL = 70;
public static final int symDOT = 56;
public static final int QUOTE = 26;
public static final int symIMPLICIT_ARG = 59;
public static final int IMPLICIT_ARG = 31;
public static final int EOF = 0;
public static final int NoDigit1 = 47;
public static final int ONE_NL = 35;
public static final int BACKQUOTE = 27;
public static final int KEYWORD = 49;
public static final int HEX_DIGIT = 5;
public static final int symDOT = 57;
public static final int symATOM = 59;
public static final int NULL_LITERAL = 71;
public static final int NUM_FLOAT = 17;
public static final int STRING_LITERAL = 69;
public static final int DOUBLE_SUFFIX = 11;
public static final int TRUE = 51;
public static final int error = 1;
public static final int BIG_INT_LITERAL = 61;
public static final int NUM_INT_PART = 13;
public static final int NoDigit = 45;
public static final int NEWLINE = 2;
public static final int HAT = 30;
public static final int NUM_BIG_INT = 16;
public static final int IDENT = 48;
public static final int STRING_ESC = 37;
public static final int EOF = 0;
public static final int INT_SUFFIX = 10;
public static final int COLON = 54;
public static final int WRONG_STRING = 41;
public static final int symIMPLICIT_ARG = 60;
public static final int NoDigit1 = 48;
public static final int symNS_SEP = 58;
public static final int FLOAT_LITERAL = 64;
public static final int LETTER = 43;
public static final int HAT = 31;
public static final int IDENT = 49;
public static final int error = 1;
public static final int WHITESPACE = 3;
public static final int LEFT_SQUARE = 22;
public static final int SHARP = 28;
public static final int LETTER = 42;
public static final int HEX_DIGIT = 5;
public static final int LEFT_PAREN = 20;
public static final int RIGHT_SQUARE = 23;
public static final int RATIO = 66;
public static final int STRING = 39;
public static final int SYMBOL = 55;
public static final int OTHER_REDUCED = 46;
public static final int NUM_DOUBLE = 18;
public static final int DOUBLE_LITERAL = 64;
public static final int LONG_SUFFIX = 9;
public static final int STRING_ESC = 38;
public static final int KEYWORD = 50;
public static final int COLON = 55;
public static final int NUM_LONG = 15;
public static final int AT = 33;
public static final int NUM_FLOAT = 17;
public static final int FLOAT_LITERAL = 63;
public static final int FALSE = 52;
public static final int WRONG_STRING = 40;
public static final int BAD_CHARACTER = 53;
public static final int TILDAAT = 35;
public static final int SYMBOL = 56;
public static final int CHAR_LITERAL = 68;
public static final int EXPONENT = 12;
public static final int INTEGER_LITERAL = 60;
public static final int SHARP_HAT = 30;
public static final int BIG_DECIMAL_LITERAL = 66;
public static final int RIGHT_CURLY = 25;
public static final int STRING = 40;
public static final int NUM_INT = 14;
public static final int BIG_INT_LITERAL = 62;
public static final int STRING_CONTENT = 39;
}

40 changes: 28 additions & 12 deletions src/ide-tools/src/org/enclojure/cup/clojure.cup
Expand Up @@ -42,6 +42,7 @@ terminal NEWLINE
,RIGHT_SQUARE
,LEFT_CURLY
,RIGHT_CURLY
,SHARP_CURLY
,QUOTE
,BACKQUOTE
,SHARP
Expand Down Expand Up @@ -71,7 +72,7 @@ terminal NEWLINE
,FALSE
,BAD_CHARACTER
,COLON
,SYMBOL
,SYMBOL
,symDOT
,symNS_SEP
,symATOM
Expand All @@ -91,35 +92,47 @@ terminal WRONG_STRING_LITERAL;
terminal NULL_LITERAL;

non terminal s_expr, map,vector,set,list,empty_list;
non terminal literal,series,empty,list_expr,pair_expr,expr_part;
non terminal literal,series,empty,list_expr,pair_expr,expr_part,expr_atom,atom,operands,operand,expression;

start with s_expr;

s_expr ::= expr_part;
s_expr ::= expr_part
;

expr_part ::= expr_part atom
| atom;

expr_part ::= literal
| list | vector | map | set;
series ::=
list
| vector
| map
| set;

operand ::= atom;

list ::= LEFT_PAREN s_expr RIGHT_PAREN;
empty_list ::= LEFT_PAREN RIGHT_PAREN;
list_expr ::= empty_list | list;
operands
::= operands operand
| operand
;

list ::= LEFT_PAREN operands RIGHT_PAREN;

vector ::= LEFT_SQUARE s_expr:e RIGHT_SQUARE
vector ::= LEFT_SQUARE operands:e RIGHT_SQUARE
{: System.out.println("vector [" + e +"]"); :}
;

set ::= SHARP LEFT_CURLY s_expr:e RIGHT_CURLY
set ::= SHARP LEFT_CURLY operands:e RIGHT_CURLY
{: System.out.println("set #{" + e +"}"); :}
;

map ::= LEFT_CURLY pair_expr:e RIGHT_CURLY
map ::= LEFT_CURLY operands:e RIGHT_CURLY
{: System.out.println("map {" + e +"}"); :}
;

pair_expr ::= s_expr s_expr;

literal ::=
INTEGER_LITERAL
INTEGER_LITERAL
| BIG_INT_LITERAL
| LONG_LITERAL
| FLOAT_LITERAL
Expand All @@ -133,6 +146,9 @@ literal ::=
| NULL_LITERAL
;

atom ::= series
| literal;

empty ::= /* empty */
;

0 comments on commit 001342d

Please sign in to comment.