Changeset 3075


Ignore:
Timestamp:
Apr 25, 2013, 11:45:08 PM (6 years ago)
Author:
ksherdy
Message:

Updated genrated code.

Location:
proto/RE/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • proto/RE/src/lexicalAnalyzer/Lextant.java

    r3072 r3075  
    1919public enum Lextant {
    2020        ANY(".", "main"),
    21         RIGHTSQUARE("]", "charClass", "]", "main"),
     21        RIGHTSQUARE("]", "charClass"),
    2222        BACKSLASH("\\", "charClass", "\\", "main"),
    2323        OR("|", "main"),
     
    2626        STAR("*", "main"),
    2727        PLUS("+", "main"),
    28         RIGHTCURLY("}", "boundedRepetition", "}", "main"),
     28        RIGHTCURLY("}", "boundedRepetition"),
    2929        LEFTROUND("(", "main"),
    3030        RIGHTROUND(")", "main"),
     
    3232        SOS("^", "main"),
    3333        LEFTSQUARE("[", "main"),
    34         EOS("!", "main"),
     34        EOS("$", "main"),
    3535        LEFTCURLY("{", "main"),
    36         COMMA(",", "boundedRepetition", ",", "main"),
     36        COMMA(",", "boundedRepetition"),
    3737
    3838       
  • proto/RE/src/lexicalAnalyzer/Scanner.java

    r3072 r3075  
    7272                return new Scanner(charStream,
    7373                        new WhitespaceTokenRecognizer(charStream, IGNORE),
     74                        new PunctuatorTokenRecognizer(charStream, LEXTANT, context),
    7475                        new CommentTokenRecognizer(charStream, IGNORE, "(?#", ")"),
    75                         new CharacterTokenRecognizer(charStream, CHARACTER, "(", ")", "[", "|", "?", "*", "+", ".", "^", "!", "\\", "{"),
    76                         new PunctuatorTokenRecognizer(charStream, LEXTANT, context),
    77                         new EndOfInputTokenRecognizer(charStream, NONE)
     76                        new EndOfInputTokenRecognizer(charStream, NONE),
     77                        new CharacterTokenRecognizer(charStream, CHARACTER)
    7878                );
    7979        }
     
    8484                return new Scanner(charStream,
    8585                        new WhitespaceTokenRecognizer(charStream, IGNORE),
    86                         new CharacterTokenRecognizer(charStream, CHARACTER, "]", "^", "-", "\\"),
    8786                        new PunctuatorTokenRecognizer(charStream, LEXTANT, context),
     87                        new CharacterTokenRecognizer(charStream, CHARACTER),
    8888                        new EndOfInputTokenRecognizer(charStream, NONE)
    8989                );
     
    9595                return new Scanner(charStream,
    9696                        new WhitespaceTokenRecognizer(charStream, IGNORE),
     97                        new PunctuatorTokenRecognizer(charStream, LEXTANT, context),
    9798                        new IntegerTokenRecognizer(charStream, INTEGER_CONST),
    98                         new PunctuatorTokenRecognizer(charStream, LEXTANT, context),
    9999                        new EndOfInputTokenRecognizer(charStream, NONE)
    100100                );
  • proto/RE/src/lexicalAnalyzer/tokenRecognizers/CharacterTokenRecognizer.java

    r3072 r3075  
    1818public class CharacterTokenRecognizer extends TokenRecognizerImp {
    1919
    20         private String [] excludedCharacters = null;
    21 
    22         public CharacterTokenRecognizer(BookmarkCharStream input, LexicalType lexicalType, String ... excludedCharacters) {
     20        public CharacterTokenRecognizer(BookmarkCharStream input, LexicalType lexicalType) {
    2321                super(input, lexicalType);
    24                
    25                 this.excludedCharacters = new String [excludedCharacters.length];
    26                 for(int i=0;i<excludedCharacters.length;i++) {
    27                         this.excludedCharacters[i] = excludedCharacters[i];
    28                 }
    2922        }
    3023
    3124        protected Result tryToReadToken() {
    3225               
    33                 if(isEndOfInput(input.peek())) {
    34                         setToken(NullToken.make(lexicalType));
    35                         return Result.NOT_FOUND;
    36                 }
    37                
    38                 // ?
    39                 if(inputStartsWithAny(excludedCharacters)) {
    40                         return Result.NOT_FOUND;
    41                 }       
    42 
    4326                LocatedChar firstChar = input.next();
    4427                TextLocation location = firstChar.getLocation();
     
    5134        }
    5235       
    53         private boolean isEndOfInput(LocatedChar c) {
    54                 return c == LocatedCharStream.FLAG_END_OF_INPUT;
    55         }
    5636}
    5737
  • proto/RE/src/lexicalAnalyzer/tokenRecognizers/TokenRecognizerImp.java

    r3072 r3075  
    115115                return result;
    116116        }
    117        
    118         // ?
    119         protected boolean inputStartsWithAny(String ... lexemes) {
    120                 Bookmark bookmark = input.bookmark();
    121                 boolean result = false;
    122117               
    123                 for(int i=0; i<lexemes.length; i++) {
    124                         result = sloppyInputStartsWith(lexemes[i], input.peek().getCharacter());
    125                        
    126                         if(result) {
    127                                 break;
    128                         }
    129                 }       
    130                
    131                 input.moveback(bookmark);
    132                 return result;
    133         }
    134 
    135         // ? single character prefix without progressing the input stream
    136         private boolean sloppyInputStartsWith(String lexeme, char c) {
    137                 for(int i=0; i<lexeme.length(); i++) {
    138                         if(c != lexeme.charAt(i)) {
    139                                 return false;
    140                         }
    141                 }
    142                 return true;
    143         }
    144        
    145118        private boolean sloppyInputStartsWith(String lexeme) {
    146119                for(int i=0; i<lexeme.length(); i++) {
  • proto/RE/src/parser/Parser.java

    r3072 r3075  
    435435                else if( nowReading.isLextant(Lextant.BACKSLASH) ) {
    436436                        expect(Lextant.BACKSLASH);
     437                }
     438                else if( nowReading.isLextant(Lextant.LEFTCURLY) ) {
     439                        expect(Lextant.LEFTCURLY);
    437440                }
    438441                if(allowCompression) {
Note: See TracChangeset for help on using the changeset viewer.